<!doctype html><html lang="en">
 <head>
  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  <meta content="width=device-width, initial-scale=1, shrink-to-fit=no" name="viewport">
  <title>Payment Method Manifest</title>
<style data-fill-with="stylesheet">/******************************************************************************
 *                   Style sheet for the W3C specifications                   *
 *
 * Special classes handled by this style sheet include:
 *
 * Indices
 *   - .toc for the Table of Contents (<ol class="toc">)
 *     + <span class="secno"> for the section numbers
 *   - #toc for the Table of Contents (<nav id="toc">)
 *   - ul.index for Indices (<a href="#ref">term</a><span>, in §N.M</span>)
 *   - table.index for Index Tables (e.g. for properties or elements)
 *
 * Structural Markup
 *   - table.data for general data tables
 *     -> use 'scope' attribute, <colgroup>, <thead>, and <tbody> for best results !
 *     -> use <table class='complex data'> for extra-complex tables
 *     -> use <td class='long'> for paragraph-length cell content
 *     -> use <td class='pre'> when manual line breaks/indentation would help readability
 *   - dl.switch for switch statements
 *   - ol.algorithm for algorithms (helps to visualize nesting)
 *   - .figure and .caption (HTML4) and figure and figcaption (HTML5)
 *     -> .sidefigure for right-floated figures
 *   - ins/del
 *
 * Code
 *   - pre and code
 *
 * Special Sections
 *   - .note       for informative notes             (div, p, span, aside, details)
 *   - .example    for informative examples          (div, p, pre, span)
 *   - .issue      for issues                        (div, p, span)
 *   - .assertion  for assertions                    (div, p, span)
 *   - .advisement for loud normative statements     (div, p, strong)
 *   - .annoying-warning for spec obsoletion notices (div, aside, details)
 *
 * Definition Boxes
 *   - pre.def   for WebIDL definitions
 *   - table.def for tables that define other entities (e.g. CSS properties)
 *   - dl.def    for definition lists that define other entitles (e.g. HTML elements)
 *
 * Numbering
 *   - .secno for section numbers in .toc and headings (<span class='secno'>3.2</span>)
 *   - .marker for source-inserted example/figure/issue numbers (<span class='marker'>Issue 4</span>)
 *   - ::before styled for CSS-generated issue/example/figure numbers:
 *     -> Documents wishing to use this only need to add
 *        figcaption::before,
 *        .caption::before { content: "Figure "  counter(figure) " ";  }
 *        .example::before { content: "Example " counter(example) " "; }
 *        .issue::before   { content: "Issue "   counter(issue) " ";   }
 *
 * Header Stuff (ignore, just don't conflict with these classes)
 *   - .head for the header
 *   - .copyright for the copyright
 *
 * Miscellaneous
 *   - .overlarge for things that should be as wide as possible, even if
 *     that overflows the body text area. This can be used on an item or
 *     on its container, depending on the effect desired.
 *     Note that this styling basically doesn't help at all when printing,
 *     since A4 paper isn't much wider than the max-width here.
 *     It's better to design things to fit into a narrower measure if possible.
 *   - js-added ToC jump links (see fixup.js)
 *
 ******************************************************************************/

/******************************************************************************/
/*                                   Body                                     */
/******************************************************************************/

	body {
		counter-reset: example figure issue;

		/* Layout */
		max-width: 50em;               /* limit line length to 50em for readability   */
		margin: 0 auto;                /* center text within page                     */
		padding: 1.6em 1.5em 2em 50px; /* assume 16px font size for downlevel clients */
		padding: 1.6em 1.5em 2em calc(26px + 1.5em); /* leave space for status flag     */

		/* Typography */
		line-height: 1.5;
		font-family: sans-serif;
		widows: 2;
		orphans: 2;
		word-wrap: break-word;
		overflow-wrap: break-word;
		hyphens: auto;

		/* Colors */
		color: black;
		background: white top left fixed no-repeat;
		background-size: 25px auto;
	}


/******************************************************************************/
/*                         Front Matter & Navigation                          */
/******************************************************************************/

/** Header ********************************************************************/

	div.head { margin-bottom: 1em }
	div.head hr { border-style: solid; }

	div.head h1 {
		font-weight: bold;
		margin: 0 0 .1em;
		font-size: 220%;
	}

	div.head h2 { margin-bottom: 1.5em;}

/** W3C Logo ******************************************************************/

	.head .logo {
		float: right;
		margin: 0.4rem 0 0.2rem .4rem;
	}

	.head img[src*="logos/W3C"] {
		display: block;
		border: solid #1a5e9a;
		border-width: .65rem .7rem .6rem;
		border-radius: .4rem;
		background: #1a5e9a;
		color: white;
		font-weight: bold;
	}

	.head a:hover > img[src*="logos/W3C"],
	.head a:focus > img[src*="logos/W3C"] {
		opacity: .8;
	}

	.head a:active > img[src*="logos/W3C"] {
		background: #c00;
		border-color: #c00;
	}

	/* see also additional rules in Link Styling section */

/** Copyright *****************************************************************/

	p.copyright,
	p.copyright small { font-size: small }

/** Back to Top / ToC Toggle **************************************************/

	@media print {
		#toc-nav {
			display: none;
		}
	}
	@media not print {
		#toc-nav {
			position: fixed;
			z-index: 2;
			bottom: 0; left: 0;
			margin: 0;
			min-width: 1.33em;
			border-top-right-radius: 2rem;
			box-shadow: 0 0 2px;
			font-size: 1.5em;
			color: black;
		}
		#toc-nav > a {
			display: block;
			white-space: nowrap;

			height: 1.33em;
			padding: .1em 0.3em;
			margin: 0;

			background: white;
			box-shadow: 0 0 2px;
			border: none;
			border-top-right-radius: 1.33em;
			background: white;
		}
		#toc-nav > #toc-jump {
			padding-bottom: 2em;
			margin-bottom: -1.9em;
		}

		#toc-nav > a:hover,
		#toc-nav > a:focus {
			background: #f8f8f8;
		}
		#toc-nav > a:not(:hover):not(:focus) {
			color: #707070;
		}

		/* statusbar gets in the way on keyboard focus; remove once browsers fix */
		#toc-nav > a[href="#toc"]:not(:hover):focus:last-child {
			padding-bottom: 1.5rem;
		}

		#toc-nav:not(:hover) > a:not(:focus) > span + span {
			/* Ideally this uses :focus-within on #toc-nav */
			display: none;
		}
		#toc-nav > a > span + span {
			padding-right: 0.2em;
		}

		#toc-toggle-inline {
			vertical-align: 0.05em;
			font-size: 80%;
			color: gray;
			color: hsla(203,20%,40%,.7);
			border-style: none;
			background: transparent;
			position: relative;
		}
		#toc-toggle-inline:hover:not(:active),
		#toc-toggle-inline:focus:not(:active) {
			text-shadow: 1px 1px silver;
			top: -1px;
			left: -1px;
		}

		#toc-nav :active {
			color: #C00;
		}
	}

/** ToC Sidebar ***************************************************************/

	/* Floating sidebar */
	@media screen {
		body.toc-sidebar #toc {
			position: fixed;
			top: 0; bottom: 0;
			left: 0;
			width: 23.5em;
			max-width: 80%;
			max-width: calc(100% - 2em - 26px);
			overflow: auto;
			padding: 0 1em;
			padding-left: 42px;
			padding-left: calc(1em + 26px);
			background: inherit;
			background-color: #f7f8f9;
			z-index: 1;
			box-shadow: -.1em 0 .25em rgba(0,0,0,.1) inset;
		}
		body.toc-sidebar #toc h2 {
			margin-top: .8rem;
			font-variant: small-caps;
			font-variant: all-small-caps;
			text-transform: lowercase;
			font-weight: bold;
			color: gray;
			color: hsla(203,20%,40%,.7);
		}
		body.toc-sidebar #toc-jump:not(:focus) {
			width: 0;
			height: 0;
			padding: 0;
			position: absolute;
			overflow: hidden;
		}
	}
	/* Hide main scroller when only the ToC is visible anyway */
	@media screen and (max-width: 28em) {
		body.toc-sidebar {
			overflow: hidden;
		}
	}

	/* Sidebar with its own space */
	@media screen and (min-width: 78em) {
		body:not(.toc-inline) #toc {
			position: fixed;
			top: 0; bottom: 0;
			left: 0;
			width: 23.5em;
			overflow: auto;
			padding: 0 1em;
			padding-left: 42px;
			padding-left: calc(1em + 26px);
			background: inherit;
			background-color: #f7f8f9;
			z-index: 1;
			box-shadow: -.1em 0 .25em rgba(0,0,0,.1) inset;
		}
		body:not(.toc-inline) #toc h2 {
			margin-top: .8rem;
			font-variant: small-caps;
			font-variant: all-small-caps;
			text-transform: lowercase;
			font-weight: bold;
			color: gray;
			color: hsla(203,20%,40%,.7);
		}

		body:not(.toc-inline) {
			padding-left: 29em;
		}
		/* See also Overflow section at the bottom */

		body:not(.toc-inline) #toc-jump:not(:focus) {
			width: 0;
			height: 0;
			padding: 0;
			position: absolute;
			overflow: hidden;
		}
	}
	@media screen and (min-width: 90em) {
		body:not(.toc-inline) {
			margin: 0 4em;
		}
	}

/******************************************************************************/
/*                                Sectioning                                  */
/******************************************************************************/

/** Headings ******************************************************************/

	h1, h2, h3, h4, h5, h6, dt {
		page-break-after: avoid;
		page-break-inside: avoid;
		font: 100% sans-serif;   /* Reset all font styling to clear out UA styles */
		font-family: inherit;    /* Inherit the font family. */
		line-height: 1.2;        /* Keep wrapped headings compact */
		hyphens: manual;         /* Hyphenated headings look weird */
	}

	h2, h3, h4, h5, h6 {
		margin-top: 3rem;
	}

	h1, h2, h3 {
		color: #005A9C;
		background: transparent;
	}

	h1 { font-size: 170%; }
	h2 { font-size: 140%; }
	h3 { font-size: 120%; }
	h4 { font-weight: bold; }
	h5 { font-style: italic; }
	h6 { font-variant: small-caps; }
	dt { font-weight: bold; }

/** Subheadings ***************************************************************/

	h1 + h2,
	#subtitle {
		/* #subtitle is a subtitle in an H2 under the H1 */
		margin-top: 0;
	}
	h2 + h3,
	h3 + h4,
	h4 + h5,
	h5 + h6 {
		margin-top: 1.2em; /* = 1 x line-height */
	}

/** Section divider ***********************************************************/

	:not(.head) > hr {
		font-size: 1.5em;
		text-align: center;
		margin: 1em auto;
		height: auto;
		border: transparent solid 0;
		background: transparent;
	}
	:not(.head) > hr::before {
		content: "\2727\2003\2003\2727\2003\2003\2727";
	}

/******************************************************************************/
/*                            Paragraphs and Lists                            */
/******************************************************************************/

	p {
		margin: 1em 0;
	}

	dd > p:first-child,
	li > p:first-child {
		margin-top: 0;
	}

	ul, ol {
		margin-left: 0;
		padding-left: 2em;
	}

	li {
		margin: 0.25em 0 0.5em;
		padding: 0;
	}

	dl dd {
		margin: 0 0 .5em 2em;
	}

	.head dd + dd { /* compact for header */
		margin-top: -.5em;
	}

	/* Style for algorithms */
	ol.algorithm ol:not(.algorithm),
	.algorithm > ol ol:not(.algorithm) {
	 border-left: 0.5em solid #DEF;
	}

	/* Put nice boxes around each algorithm. */
	[data-algorithm]:not(.heading) {
	  padding: .5em;
	  border: thin solid #ddd; border-radius: .5em;
	  margin: .5em calc(-0.5em - 1px);
	}
	[data-algorithm]:not(.heading) > :first-child {
	  margin-top: 0;
	}
	[data-algorithm]:not(.heading) > :last-child {
	  margin-bottom: 0;
	}

	/* Style for switch/case <dl>s */
	dl.switch > dd > ol.only,
	dl.switch > dd > .only > ol {
	 margin-left: 0;
	}
	dl.switch > dd > ol.algorithm,
	dl.switch > dd > .algorithm > ol {
	 margin-left: -2em;
	}
	dl.switch {
	 padding-left: 2em;
	}
	dl.switch > dt {
	 text-indent: -1.5em;
	 margin-top: 1em;
	}
	dl.switch > dt + dt {
	 margin-top: 0;
	}
	dl.switch > dt::before {
	 content: '\21AA';
	 padding: 0 0.5em 0 0;
	 display: inline-block;
	 width: 1em;
	 text-align: right;
	 line-height: 0.5em;
	}

/** Terminology Markup ********************************************************/


/******************************************************************************/
/*                                 Inline Markup                              */
/******************************************************************************/

/** Terminology Markup ********************************************************/
	dfn   { /* Defining instance */
		font-weight: bolder;
	}
	a > i { /* Instance of term */
		font-style: normal;
	}
	dt dfn code, code.idl {
		font-size: medium;
	}
	dfn var {
		font-style: normal;
	}

/** Change Marking ************************************************************/

	del { color: red;  text-decoration: line-through; }
	ins { color: #080; text-decoration: underline;    }

/** Miscellaneous improvements to inline formatting ***************************/

	sup {
		vertical-align: super;
		font-size: 80%
	}

/******************************************************************************/
/*                                    Code                                    */
/******************************************************************************/

/** General monospace/pre rules ***********************************************/

	pre, code, samp {
		font-family: Menlo, Consolas, "DejaVu Sans Mono", Monaco, monospace;
		font-size: .9em;
		page-break-inside: avoid;
		hyphens: none;
		text-transform: none;
	}
	pre code,
	code code {
		font-size: 100%;
	}

	pre {
		margin-top: 1em;
		margin-bottom: 1em;
		overflow: auto;
	}

/** Inline Code fragments *****************************************************/

  /* Do something nice. */

/******************************************************************************/
/*                                    Links                                   */
/******************************************************************************/

/** General Hyperlinks ********************************************************/

	/* We hyperlink a lot, so make it less intrusive */
	a[href] {
		color: #034575;
		text-decoration: none;
		border-bottom: 1px solid #707070;
		/* Need a bit of extending for it to look okay */
		padding: 0 1px 0;
		margin: 0 -1px 0;
	}
	a:visited {
		border-bottom-color: #BBB;
	}

	/* Use distinguishing colors when user is interacting with the link */
	a[href]:focus,
	a[href]:hover {
		background: #f8f8f8;
		background: rgba(75%, 75%, 75%, .25);
		border-bottom-width: 3px;
		margin-bottom: -2px;
	}
	a[href]:active {
		color: #C00;
		border-color: #C00;
	}

	/* Backout above styling for W3C logo */
	.head .logo,
	.head .logo a {
		border: none;
		text-decoration: none;
		background: transparent;
	}

/******************************************************************************/
/*                                    Images                                  */
/******************************************************************************/

	img {
		border-style: none;
	}

	/* For autogen numbers, add
	   .caption::before, figcaption::before { content: "Figure " counter(figure) ". "; }
	*/

	figure, .figure, .sidefigure {
		page-break-inside: avoid;
		text-align: center;
		margin: 2.5em 0;
	}
	.figure img,    .sidefigure img,    figure img,
	.figure object, .sidefigure object, figure object {
		max-width: 100%;
		margin: auto;
	}
	.figure pre, .sidefigure pre, figure pre {
		text-align: left;
		display: table;
		margin: 1em auto;
	}
	.figure table, figure table {
		margin: auto;
	}
	@media screen and (min-width: 20em) {
		.sidefigure {
			float: right;
			width: 50%;
			margin: 0 0 0.5em 0.5em
		}
	}
	.caption, figcaption, caption {
		font-style: italic;
		font-size: 90%;
	}
	.caption::before, figcaption::before, figcaption > .marker {
		font-weight: bold;
	}
	.caption, figcaption {
		counter-increment: figure;
	}

	/* DL list is indented 2em, but figure inside it is not */
	dd > .figure, dd > figure { margin-left: -2em }

/******************************************************************************/
/*                             Colored Boxes                                  */
/******************************************************************************/

	.issue, .note, .example, .assertion, .advisement, blockquote {
		padding: .5em;
		border: .5em;
		border-left-style: solid;
		page-break-inside: avoid;
	}
	span.issue, span.note {
		padding: .1em .5em .15em;
		border-right-style: solid;
	}

	.issue,
	.note,
	.example,
	.advisement,
	.assertion,
	blockquote {
		margin: 1em auto;
	}
	.note  > p:first-child,
	.issue > p:first-child,
	blockquote > :first-child {
		margin-top: 0;
	}
	blockquote > :last-child {
		margin-bottom: 0;
	}

/** Blockquotes ***************************************************************/

	blockquote {
		border-color: silver;
	}

/** Open issue ****************************************************************/

	.issue {
		border-color: #E05252;
		background: #FBE9E9;
		counter-increment: issue;
		overflow: auto;
	}
	.issue::before, .issue > .marker {
		text-transform: uppercase;
		color: #AE1E1E;
		padding-right: 1em;
		text-transform: uppercase;
	}
	/* Add .issue::before { content: "Issue " counter(issue) " "; } for autogen numbers,
	   or use class="marker" to mark up the issue number in source. */

/** Example *******************************************************************/

	.example {
		border-color: #E0CB52;
		background: #FCFAEE;
		counter-increment: example;
		overflow: auto;
		clear: both;
	}
	.example::before, .example > .marker {
		text-transform: uppercase;
		color: #827017;
		min-width: 7.5em;
		display: block;
	}
	/* Add .example::before { content: "Example " counter(example) " "; } for autogen numbers,
	   or use class="marker" to mark up the example number in source. */

/** Non-normative Note ********************************************************/

	.note {
		border-color: #52E052;
		background: #E9FBE9;
		overflow: auto;
	}

	.note::before, .note > .marker,
	details.note > summary::before,
	details.note > summary > .marker {
		text-transform: uppercase;
		display: block;
		color: hsl(120, 70%, 30%);
	}
	/* Add .note::before { content: "Note"; } for autogen label,
	   or use class="marker" to mark up the label in source. */

	details.note > summary {
		display: block;
		color: hsl(120, 70%, 30%);
	}
	details.note[open] > summary {
		border-bottom: 1px silver solid;
	}

/** Assertion Box *************************************************************/
	/*  for assertions in algorithms */

	.assertion {
		border-color: #AAA;
		background: #EEE;
	}

/** Advisement Box ************************************************************/
	/*  for attention-grabbing normative statements */

	.advisement {
		border-color: orange;
		border-style: none solid;
		background: #FFEECC;
	}
	strong.advisement {
		display: block;
		text-align: center;
	}
	.advisement > .marker {
		color: #B35F00;
	}

/** Spec Obsoletion Notice ****************************************************/
	/* obnoxious obsoletion notice for older/abandoned specs. */

	details {
		display: block;
	}
	summary {
		font-weight: bolder;
	}

	.annoying-warning:not(details),
	details.annoying-warning:not([open]) > summary,
	details.annoying-warning[open] {
		background: #fdd;
		color: red;
		font-weight: bold;
		padding: .75em 1em;
		border: thick red;
		border-style: solid;
		border-radius: 1em;
	}
	.annoying-warning :last-child {
		margin-bottom: 0;
	}

@media not print {
	details.annoying-warning[open] {
		position: fixed;
		left: 1em;
		right: 1em;
		bottom: 1em;
		z-index: 1000;
	}
}

	details.annoying-warning:not([open]) > summary {
		text-align: center;
	}

/** Entity Definition Boxes ***************************************************/

	.def {
		padding: .5em 1em;
		background: #DEF;
		margin: 1.2em 0;
		border-left: 0.5em solid #8CCBF2;
	}

/******************************************************************************/
/*                                    Tables                                  */
/******************************************************************************/

	th, td {
		text-align: left;
		text-align: start;
	}

/** Property/Descriptor Definition Tables *************************************/

	table.def {
		/* inherits .def box styling, see above */
		width: 100%;
		border-spacing: 0;
	}

	table.def td,
	table.def th {
		padding: 0.5em;
		vertical-align: baseline;
		border-bottom: 1px solid #bbd7e9;
	}

	table.def > tbody > tr:last-child th,
	table.def > tbody > tr:last-child td {
		border-bottom: 0;
	}

	table.def th {
		font-style: italic;
		font-weight: normal;
		padding-left: 1em;
		width: 3em;
	}

	/* For when values are extra-complex and need formatting for readability */
	table td.pre {
		white-space: pre-wrap;
	}

	/* A footnote at the bottom of a def table */
	table.def           td.footnote {
		padding-top: 0.6em;
	}
	table.def           td.footnote::before {
		content: " ";
		display: block;
		height: 0.6em;
		width: 4em;
		border-top: thin solid;
	}

/** Data tables (and properly marked-up index tables) *************************/
	/*
		 <table class="data"> highlights structural relationships in a table
		 when correct markup is used (e.g. thead/tbody, th vs. td, scope attribute)

		 Use class="complex data" for particularly complicated tables --
		 (This will draw more lines: busier, but clearer.)

		 Use class="long" on table cells with paragraph-like contents
		 (This will adjust text alignment accordingly.)
		 Alternately use class="longlastcol" on tables, to have the last column assume "long".
	*/

	table {
		word-wrap: normal;
		overflow-wrap: normal;
		hyphens: manual;
	}

	table.data,
	table.index {
		margin: 1em auto;
		border-collapse: collapse;
		border: hidden;
		width: 100%;
	}
	table.data caption,
	table.index caption {
		max-width: 50em;
		margin: 0 auto 1em;
	}

	table.data td,  table.data th,
	table.index td, table.index th {
		padding: 0.5em 1em;
		border-width: 1px;
		border-color: silver;
		border-top-style: solid;
	}

	table.data thead td:empty {
		padding: 0;
		border: 0;
	}

	table.data  thead,
	table.index thead,
	table.data  tbody,
	table.index tbody {
		border-bottom: 2px solid;
	}

	table.data colgroup,
	table.index colgroup {
		border-left: 2px solid;
	}

	table.data  tbody th:first-child,
	table.index tbody th:first-child  {
		border-right: 2px solid;
		border-top: 1px solid silver;
		padding-right: 1em;
	}

	table.data th[colspan],
	table.data td[colspan] {
		text-align: center;
	}

	table.complex.data th,
	table.complex.data td {
		border: 1px solid silver;
		text-align: center;
	}

	table.data.longlastcol td:last-child,
	table.data td.long {
	 vertical-align: baseline;
	 text-align: left;
	}

	table.data img {
		vertical-align: middle;
	}


/*
Alternate table alignment rules

	table.data,
	table.index {
		text-align: center;
	}

	table.data  thead th[scope="row"],
	table.index thead th[scope="row"] {
		text-align: right;
	}

	table.data  tbody th:first-child,
	table.index tbody th:first-child  {
		text-align: right;
	}

Possible extra rowspan handling

	table.data  tbody th[rowspan]:not([rowspan='1']),
	table.index tbody th[rowspan]:not([rowspan='1']),
	table.data  tbody td[rowspan]:not([rowspan='1']),
	table.index tbody td[rowspan]:not([rowspan='1']) {
		border-left: 1px solid silver;
	}

	table.data  tbody th[rowspan]:first-child,
	table.index tbody th[rowspan]:first-child,
	table.data  tbody td[rowspan]:first-child,
	table.index tbody td[rowspan]:first-child{
		border-left: 0;
		border-right: 1px solid silver;
	}
*/

/******************************************************************************/
/*                                  Indices                                   */
/******************************************************************************/


/** Table of Contents *********************************************************/

	.toc a {
		/* More spacing; use padding to make it part of the click target. */
		padding-top: 0.1rem;
		/* Larger, more consistently-sized click target */
		display: block;
		/* Reverse color scheme */
		color: black;
		border-color: #3980B5;
		border-bottom-width: 3px !important;
		margin-bottom: 0px !important;
	}
	.toc a:visited {
		border-color: #054572;
	}
	.toc a:not(:focus):not(:hover) {
		/* Allow colors to cascade through from link styling */
		border-bottom-color: transparent;
	}

	.toc, .toc ol, .toc ul, .toc li {
		list-style: none; /* Numbers must be inlined into source */
		/* because generated content isn't search/selectable and markers can't do multilevel yet */
		margin:  0;
		padding: 0;
		line-height: 1.1rem; /* consistent spacing */
	}

	/* ToC not indented until third level, but font style & margins show hierarchy */
	.toc > li             { font-weight: bold;   }
	.toc > li li          { font-weight: normal; }
	.toc > li li li       { font-size:   95%;    }
	.toc > li li li li    { font-size:   90%;    }
	.toc > li li li li .secno { font-size: 85%; }
	.toc > li li li li li { font-size:   85%;    }
	.toc > li li li li li .secno { font-size: 100%; }

	/* @supports not (display:grid) { */
		.toc > li             { margin: 1.5rem 0;    }
		.toc > li li          { margin: 0.3rem 0;    }
		.toc > li li li       { margin-left: 2rem;   }

		/* Section numbers in a column of their own */
		.toc .secno {
			float: left;
			width: 4rem;
			white-space: nowrap;
		}

		.toc li {
			clear: both;
		}

		:not(li) > .toc              { margin-left:  5rem; }
		.toc .secno                  { margin-left: -5rem; }
		.toc > li li li .secno       { margin-left: -7rem; }
		.toc > li li li li .secno    { margin-left: -9rem; }
		.toc > li li li li li .secno { margin-left: -11rem; }

		/* Tighten up indentation in narrow ToCs */
		@media (max-width: 30em) {
			:not(li) > .toc              { margin-left:  4rem; }
			.toc .secno                  { margin-left: -4rem; }
			.toc > li li li              { margin-left:  1rem; }
			.toc > li li li .secno       { margin-left: -5rem; }
			.toc > li li li li .secno    { margin-left: -6rem; }
			.toc > li li li li li .secno { margin-left: -7rem; }
		}
	/* } */

	@supports (display:grid) and (display:contents) {
		/* Use #toc over .toc to override non-@supports rules. */
		#toc {
			display: grid;
			align-content: start;
			grid-template-columns: auto 1fr;
			grid-column-gap: 1rem;
			column-gap: 1rem;
			grid-row-gap: .6rem;
			row-gap: .6rem;
		}
		#toc h2 {
			grid-column: 1 / -1;
			margin-bottom: 0;
		}
		#toc ol,
		#toc li,
		#toc a {
			display: contents;
			/* Switch <a> to subgrid when supported */
		}
		#toc span {
			margin: 0;
		}
		#toc > .toc > li > a > span {
			/* The spans of the top-level list,
			   comprising the first items of each top-level section. */
			margin-top: 1.1rem;
		}
		#toc#toc .secno { /* Ugh, need more specificity to override base.css */
			grid-column: 1;
			width: auto;
			margin-left: 0;
		}
		#toc .content {
			grid-column: 2;
			width: auto;
			margin-right: 1rem;
		}
		#toc .content:hover {
			background: rgba(75%, 75%, 75%, .25);
			border-bottom: 3px solid #054572;
			margin-bottom: -3px;
		}
		#toc li li li .content {
			margin-left: 1rem;
		}
		#toc li li li li .content {
			margin-left: 2rem;
		}
	}


/** Index *********************************************************************/

	/* Index Lists: Layout */
	ul.index       { margin-left: 0; columns: 15em; text-indent: 1em hanging; }
	ul.index li    { margin-left: 0; list-style: none; break-inside: avoid; }
	ul.index li li { margin-left: 1em }
	ul.index dl    { margin-top: 0; }
	ul.index dt    { margin: .2em 0 .2em 20px;}
	ul.index dd    { margin: .2em 0 .2em 40px;}
	/* Index Lists: Typography */
	ul.index ul,
	ul.index dl { font-size: smaller; }
	@media not print {
		ul.index li span {
			white-space: nowrap;
			color: transparent; }
		ul.index li a:hover + span,
		ul.index li a:focus + span {
			color: #707070;
		}
	}

/** Index Tables *****************************************************/
	/* See also the data table styling section, which this effectively subclasses */

	table.index {
		font-size: small;
		border-collapse: collapse;
		border-spacing: 0;
		text-align: left;
		margin: 1em 0;
	}

	table.index td,
	table.index th {
		padding: 0.4em;
	}

	table.index tr:hover td:not([rowspan]),
	table.index tr:hover th:not([rowspan]) {
		background: #f7f8f9;
	}

	/* The link in the first column in the property table (formerly a TD) */
	table.index th:first-child a {
		font-weight: bold;
	}

/******************************************************************************/
/*                                    Print                                   */
/******************************************************************************/

	@media print {
		/* Pages have their own margins. */
		html {
			margin: 0;
		}
		/* Serif for print. */
		body {
			font-family: serif;
		}
	}
	@page {
		margin: 1.5cm 1.1cm;
	}

/******************************************************************************/
/*                                    Legacy                                  */
/******************************************************************************/

	/* This rule is inherited from past style sheets. No idea what it's for. */
	.hide { display: none }



/******************************************************************************/
/*                             Overflow Control                               */
/******************************************************************************/

	.figure .caption, .sidefigure .caption, figcaption {
		/* in case figure is overlarge, limit caption to 50em */
		max-width: 50rem;
		margin-left: auto;
		margin-right: auto;
	}
	.overlarge {
		/* Magic to create good table positioning:
		   "content column" is 50ems wide at max; less on smaller screens.
		   Extra space (after ToC + content) is empty on the right.

		   1. When table < content column, centers table in column.
		   2. When content < table < available, left-aligns.
		   3. When table > available, fills available + scroll bar.
		*/ 
		display: grid;
		grid-template-columns: minmax(0, 50em);
	}
	.overlarge > table {
		/* limit preferred width of table */
		max-width: 50em;
		margin-left: auto;
		margin-right: auto;
	}

	@media (min-width: 55em) {
		.overlarge {
			margin-right: calc(13px + 26.5rem - 50vw);
			max-width: none;
		}
	}
	@media screen and (min-width: 78em) {
		body:not(.toc-inline) .overlarge {
			/* 30.5em body padding 50em content area */
			margin-right: calc(40em - 50vw) !important;
		}
	}
	@media screen and (min-width: 90em) {
		body:not(.toc-inline) .overlarge {
			/* 4em html margin 30.5em body padding 50em content area */
			margin-right: calc(84.5em - 100vw) !important;
		}
	}

	@media not print {
		.overlarge {
			overflow-x: auto;
			/* See Lea Verou's explanation background-attachment:
			 * http://lea.verou.me/2012/04/background-attachment-local/
			 *
			background: top left  / 4em 100% linear-gradient(to right,  #ffffff, rgba(255, 255, 255, 0)) local,
			            top right / 4em 100% linear-gradient(to left, #ffffff, rgba(255, 255, 255, 0)) local,
			            top left  / 1em 100% linear-gradient(to right,  #c3c3c5, rgba(195, 195, 197, 0)) scroll,
			            top right / 1em 100% linear-gradient(to left, #c3c3c5, rgba(195, 195, 197, 0)) scroll,
			            white;
			background-repeat: no-repeat;
			*/
		}
	}
</style>
  <link href="https://www.w3.org/TR/payment-method-manifest/" rel="canonical">
<style>/* style-md-lists */

/* This is a weird hack for me not yet following the commonmark spec
   regarding paragraph and lists. */
[data-md] > :first-child {
    margin-top: 0;
}
[data-md] > :last-child {
    margin-bottom: 0;
}</style>
<style>/* style-selflinks */

.heading, .issue, .note, .example, li, dt {
    position: relative;
}
a.self-link {
    position: absolute;
    top: 0;
    left: calc(-1 * (3.5rem - 26px));
    width: calc(3.5rem - 26px);
    height: 2em;
    text-align: center;
    border: none;
    transition: opacity .2s;
    opacity: .5;
}
a.self-link:hover {
    opacity: 1;
}
.heading > a.self-link {
    font-size: 83%;
}
li > a.self-link {
    left: calc(-1 * (3.5rem - 26px) - 2em);
}
dfn > a.self-link {
    top: auto;
    left: auto;
    opacity: 0;
    width: 1.5em;
    height: 1.5em;
    background: gray;
    color: white;
    font-style: normal;
    transition: opacity .2s, background-color .2s, color .2s;
}
dfn:hover > a.self-link {
    opacity: 1;
}
dfn > a.self-link:hover {
    color: black;
}

a.self-link::before            { content: "¶"; }
.heading > a.self-link::before { content: "§"; }
dfn > a.self-link::before      { content: "#"; }</style>
<style>/* style-counters */

body {
    counter-reset: example figure issue;
}
.issue {
    counter-increment: issue;
}
.issue:not(.no-marker)::before {
    content: "Issue " counter(issue);
}

.example {
    counter-increment: example;
}
.example:not(.no-marker)::before {
    content: "Example " counter(example);
}
.invalid.example:not(.no-marker)::before,
.illegal.example:not(.no-marker)::before {
    content: "Invalid Example" counter(example);
}

figcaption {
    counter-increment: figure;
}
figcaption:not(.no-marker)::before {
    content: "Figure " counter(figure) " ";
}</style>
<style>/* style-autolinks */

.css.css, .property.property, .descriptor.descriptor {
    color: #005a9c;
    font-size: inherit;
    font-family: inherit;
}
.css::before, .property::before, .descriptor::before {
    content: "‘";
}
.css::after, .property::after, .descriptor::after {
    content: "’";
}
.property, .descriptor {
    /* Don't wrap property and descriptor names */
    white-space: nowrap;
}
.type { /* CSS value <type> */
    font-style: italic;
}
pre .property::before, pre .property::after {
    content: "";
}
[data-link-type="property"]::before,
[data-link-type="propdesc"]::before,
[data-link-type="descriptor"]::before,
[data-link-type="value"]::before,
[data-link-type="function"]::before,
[data-link-type="at-rule"]::before,
[data-link-type="selector"]::before,
[data-link-type="maybe"]::before {
    content: "‘";
}
[data-link-type="property"]::after,
[data-link-type="propdesc"]::after,
[data-link-type="descriptor"]::after,
[data-link-type="value"]::after,
[data-link-type="function"]::after,
[data-link-type="at-rule"]::after,
[data-link-type="selector"]::after,
[data-link-type="maybe"]::after {
    content: "’";
}

[data-link-type].production::before,
[data-link-type].production::after,
.prod [data-link-type]::before,
.prod [data-link-type]::after {
    content: "";
}

[data-link-type=element],
[data-link-type=element-attr] {
    font-family: Menlo, Consolas, "DejaVu Sans Mono", monospace;
    font-size: .9em;
}
[data-link-type=element]::before { content: "<" }
[data-link-type=element]::after  { content: ">" }

[data-link-type=biblio] {
    white-space: pre;
}</style>
<style>/* style-dfn-panel */

.dfn-panel {
    position: absolute;
    z-index: 35;
    height: auto;
    width: -webkit-fit-content;
    width: fit-content;
    max-width: 300px;
    max-height: 500px;
    overflow: auto;
    padding: 0.5em 0.75em;
    font: small Helvetica Neue, sans-serif, Droid Sans Fallback;
    background: #DDDDDD;
    color: black;
    border: outset 0.2em;
}
.dfn-panel:not(.on) { display: none; }
.dfn-panel * { margin: 0; padding: 0; text-indent: 0; }
.dfn-panel > b { display: block; }
.dfn-panel a { color: black; }
.dfn-panel a:not(:hover) { text-decoration: none !important; border-bottom: none !important; }
.dfn-panel > b + b { margin-top: 0.25em; }
.dfn-panel ul { padding: 0; }
.dfn-panel li { list-style: inside; }
.dfn-panel.activated {
    display: inline-block;
    position: fixed;
    left: .5em;
    bottom: 2em;
    margin: 0 auto;
    max-width: calc(100vw - 1.5em - .4em - .5em);
    max-height: 30vh;
}

.dfn-paneled { cursor: pointer; }
</style>
<style>/* style-syntax-highlighting */

.highlight:not(.idl) { background: hsl(24, 20%, 95%); }
code.highlight { padding: .1em; border-radius: .3em; }
pre.highlight, pre > code.highlight { display: block; padding: 1em; margin: .5em 0; overflow: auto; border-radius: 0; }
c-[a] { color: #990055 } /* Keyword.Declaration */
c-[b] { color: #990055 } /* Keyword.Type */
c-[c] { color: #708090 } /* Comment */
c-[d] { color: #708090 } /* Comment.Multiline */
c-[e] { color: #0077aa } /* Name.Attribute */
c-[f] { color: #669900 } /* Name.Tag */
c-[g] { color: #222222 } /* Name.Variable */
c-[k] { color: #990055 } /* Keyword */
c-[l] { color: #000000 } /* Literal */
c-[m] { color: #000000 } /* Literal.Number */
c-[n] { color: #0077aa } /* Name */
c-[o] { color: #999999 } /* Operator */
c-[p] { color: #999999 } /* Punctuation */
c-[s] { color: #a67f59 } /* Literal.String */
c-[t] { color: #a67f59 } /* Literal.String.Single */
c-[u] { color: #a67f59 } /* Literal.String.Double */
c-[cp] { color: #708090 } /* Comment.Preproc */
c-[c1] { color: #708090 } /* Comment.Single */
c-[cs] { color: #708090 } /* Comment.Special */
c-[kc] { color: #990055 } /* Keyword.Constant */
c-[kn] { color: #990055 } /* Keyword.Namespace */
c-[kp] { color: #990055 } /* Keyword.Pseudo */
c-[kr] { color: #990055 } /* Keyword.Reserved */
c-[ld] { color: #000000 } /* Literal.Date */
c-[nc] { color: #0077aa } /* Name.Class */
c-[no] { color: #0077aa } /* Name.Constant */
c-[nd] { color: #0077aa } /* Name.Decorator */
c-[ni] { color: #0077aa } /* Name.Entity */
c-[ne] { color: #0077aa } /* Name.Exception */
c-[nf] { color: #0077aa } /* Name.Function */
c-[nl] { color: #0077aa } /* Name.Label */
c-[nn] { color: #0077aa } /* Name.Namespace */
c-[py] { color: #0077aa } /* Name.Property */
c-[ow] { color: #999999 } /* Operator.Word */
c-[mb] { color: #000000 } /* Literal.Number.Bin */
c-[mf] { color: #000000 } /* Literal.Number.Float */
c-[mh] { color: #000000 } /* Literal.Number.Hex */
c-[mi] { color: #000000 } /* Literal.Number.Integer */
c-[mo] { color: #000000 } /* Literal.Number.Oct */
c-[sb] { color: #a67f59 } /* Literal.String.Backtick */
c-[sc] { color: #a67f59 } /* Literal.String.Char */
c-[sd] { color: #a67f59 } /* Literal.String.Doc */
c-[se] { color: #a67f59 } /* Literal.String.Escape */
c-[sh] { color: #a67f59 } /* Literal.String.Heredoc */
c-[si] { color: #a67f59 } /* Literal.String.Interpol */
c-[sx] { color: #a67f59 } /* Literal.String.Other */
c-[sr] { color: #a67f59 } /* Literal.String.Regex */
c-[ss] { color: #a67f59 } /* Literal.String.Symbol */
c-[vc] { color: #0077aa } /* Name.Variable.Class */
c-[vg] { color: #0077aa } /* Name.Variable.Global */
c-[vi] { color: #0077aa } /* Name.Variable.Instance */
c-[il] { color: #000000 } /* Literal.Number.Integer.Long */
</style>
  <link href="https://www.w3.org/StyleSheets/TR/2016/W3C-ED" rel="stylesheet" type="text/css">
 <body class="h-entry">
  <div class="head">
   <p data-fill-with="logo"><a class="logo" href="https://www.w3.org/"> <img alt="W3C" height="48" src="https://www.w3.org/StyleSheets/TR/2016/logos/W3C" width="72"> </a> </p>
   <h1 class="p-name no-ref" id="title">Payment Method Manifest</h1>
   <h2 class="no-num no-toc no-ref heading settled" id="subtitle"><span class="content">Editor’s Draft, <time class="dt-updated" datetime="1970-01-01">1 January 1970</time></span></h2>
   <div data-fill-with="spec-metadata">
    <dl>
     <dt>This version:
     <dd><a class="u-url" href="https://w3c.github.io/payment-method-manifest/">https://w3c.github.io/payment-method-manifest/</a>
     <dt>Latest published version:
     <dd><a href="https://www.w3.org/TR/payment-method-manifest/">https://www.w3.org/TR/payment-method-manifest/</a>
     <dt class="editor">Editors:
     <dd class="editor p-author h-card vcard"><span class="p-name fn">Dapeng Liu</span> (<span class="p-org org">Alibaba</span>)
     <dd class="editor p-author h-card vcard" data-editor-id="52873"><a class="p-name fn u-url url" href="https://domenic.me/">Domenic Denicola</a> (<a class="p-org org" href="https://www.google.com/">Google</a>) <a class="u-email email" href="mailto:d@domenic.me">d@domenic.me</a>
     <dd class="editor p-author h-card vcard" data-editor-id="76588"><span class="p-name fn">Zach Koch</span> (<a class="p-org org" href="https://www.google.com/">Google</a>)
    </dl>
   </div>
   <div data-fill-with="warning"></div>
   <p class="copyright" data-fill-with="copyright"><a href="https://www.w3.org/Consortium/Legal/ipr-notice#Copyright">Copyright</a> © 1970 <a href="https://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="https://www.csail.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="https://www.ercim.eu/"><abbr title="European Research Consortium for Informatics and Mathematics">ERCIM</abbr></a>, <a href="https://www.keio.ac.jp/">Keio</a>, <a href="https://ev.buaa.edu.cn/">Beihang</a>). W3C <a href="https://www.w3.org/Consortium/Legal/ipr-notice#Legal_Disclaimer">liability</a>, <a href="https://www.w3.org/Consortium/Legal/ipr-notice#W3C_Trademarks">trademark</a> and <a href="https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document" rel="license">permissive document license</a> rules apply. </p>
   <hr title="Separator for header">
  </div>
  <div class="p-summary" data-fill-with="abstract">
   <h2 class="no-num no-toc no-ref heading settled" id="abstract"><span class="content">Abstract</span></h2>
   <p>This specification defines the machine-readable manifest file, known as a <dfn class="dfn-paneled" data-dfn-type="dfn" data-export id="payment-method-manifest">payment method manifest</dfn>, describing how a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method">payment method</a> participates in the Web Payments ecosystem, and how such files are to be used.</p>
  </div>
  <h2 class="no-num no-toc no-ref heading settled" id="status"><span class="content">Status of this document</span></h2>
  <div data-fill-with="status">
   <p></p>
  </div>
  <div data-fill-with="at-risk"></div>
  <nav data-fill-with="table-of-contents" id="toc">
   <h2 class="no-num no-toc no-ref" id="contents">Table of Contents</h2>
   <ol class="toc" role="directory">
    <li>
     <a href="#introduction"><span class="secno">1</span> <span class="content">Introduction</span></a>
     <ol class="toc">
      <li><a href="#use-cases"><span class="secno">1.1</span> <span class="content">Use cases</span></a>
      <li><a href="#accessing"><span class="secno">1.2</span> <span class="content">Accessing the manifest</span></a>
      <li><a href="#manifest-example"><span class="secno">1.3</span> <span class="content">Example manifest file</span></a>
     </ol>
    <li><a href="#format"><span class="secno">2</span> <span class="content">Manifest format</span></a>
    <li>
     <a href="#processing-model"><span class="secno">3</span> <span class="content">Processing model</span></a>
     <ol class="toc">
      <li><a href="#monkeypatch"><span class="secno">3.1</span> <span class="content">Modifications to <cite>Payment Request API</cite></span></a>
      <li><a href="#ingest"><span class="secno">3.2</span> <span class="content">Ingesting payment method manifests</span></a>
      <li><a href="#fetch-pmm"><span class="secno">3.3</span> <span class="content">Fetching payment method manifests</span></a>
      <li><a href="#validate-and-parse"><span class="secno">3.4</span> <span class="content">Validating and parsing payment method manifests</span></a>
      <li><a href="#fetch-wam"><span class="secno">3.5</span> <span class="content">Fetching web app manifests</span></a>
     </ol>
    <li>
     <a href="#security"><span class="secno">4</span> <span class="content">Security and privacy considerations</span></a>
     <ol class="toc">
      <li><a href="#revealing-to-providers"><span class="secno">4.1</span> <span class="content">Revealing user activity to payment providers</span></a>
      <li><a href="#development-environments"><span class="secno">4.2</span> <span class="content">Considerations for development environments</span></a>
      <li><a href="#matching-payment-apps"><span class="secno">4.3</span> <span class="content">Matching payment apps</span></a>
     </ol>
    <li>
     <a href="#iana"><span class="secno">5</span> <span class="content">IANA considerations</span></a>
     <ol class="toc">
      <li><a href="#payment-method-manifest-link"><span class="secno">5.1</span> <span class="content">The <code>payment-method-manifest</code> link relation</span></a>
     </ol>
    <li><a href="#acknowledgments"><span class="secno"></span> <span class="content">Acknowledgments</span></a>
    <li>
     <a href="#index"><span class="secno"></span> <span class="content">Index</span></a>
     <ol class="toc">
      <li><a href="#index-defined-here"><span class="secno"></span> <span class="content">Terms defined by this specification</span></a>
      <li><a href="#index-defined-elsewhere"><span class="secno"></span> <span class="content">Terms defined by reference</span></a>
     </ol>
    <li>
     <a href="#references"><span class="secno"></span> <span class="content">References</span></a>
     <ol class="toc">
      <li><a href="#normative"><span class="secno"></span> <span class="content">Normative References</span></a>
      <li><a href="#informative"><span class="secno"></span> <span class="content">Informative References</span></a>
     </ol>
   </ol>
  </nav>
  <main>
   <div class="non-normative">
    <h2 class="heading settled" data-level="1" id="introduction"><span class="secno">1. </span><span class="content">Introduction</span><a class="self-link" href="#introduction"></a></h2>
    <p><em>This section and its sub-sections are non-normative.</em></p>
    <h3 class="heading settled" data-level="1.1" id="use-cases"><span class="secno">1.1. </span><span class="content">Use cases</span><a class="self-link" href="#use-cases"></a></h3>
    <p>This specification intends to address the following use cases:</p>
    <ul>
     <li data-md>
      <p>The owner of a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method①">payment method</a> wishes to authorize only certain parties to distribute <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps">payment apps</a> that are capable of implementing the payment method. In this use case, the
browser helps to ensure that for that payment method, the user can only invoke payment apps from
parties authorized by the owner of the payment method.</p>
     <li data-md>
      <p>In addition, the owner of a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method②">payment method</a> wishes to confirm the authenticity of a
particular payment app (e.g., via a digital signature for that app).</p>
     <li data-md>
      <p>When the user has not yet installed a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps①">payment app</a> for a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method③">payment method</a>, the user agent
can provide an improved user experience for procuring one.</p>
    </ul>
    <p>This is accomplished via the requirement that every <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method④">payment method</a> whose <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers">identifier</a> is <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-url-based-payment-method-identifiers" id="ref-for-dfn-url-based-payment-method-identifiers">URL-based</a> will
provide a <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest">payment method manifest</a> file in JSON format containing two key pieces of information:</p>
    <ul>
     <li data-md>
      <p>any default <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps②">payment apps</a> that are associated with this <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method⑤">payment method</a>, referenced as <a data-link-type="dfn" href="https://url.spec.whatwg.org/#absolute-url-string" id="ref-for-absolute-url-string">absolute-URL strings</a> giving the <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-manifest-url" id="ref-for-dfn-manifest-url">URL</a> of their <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-manifest" id="ref-for-dfn-manifest">web app manifests</a>; and</p>
     <li data-md>
      <p>any other <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin" id="ref-for-concept-origin">origins</a> that are permitted to return payment credentials for this <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method⑥">payment method</a>.</p>
    </ul>
    <h3 class="heading settled" data-level="1.2" id="accessing"><span class="secno">1.2. </span><span class="content">Accessing the manifest</span><a class="self-link" href="#accessing"></a></h3>
    <p>The machine-readable <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest①">payment method manifest</a> might be found either directly at the <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers①">payment method identifier</a> URL, or in a location indicated indirectly by following a HTTP
`<code>Link</code>` header from that URL. <a data-link-type="biblio" href="#biblio-rfc8288">[RFC8288]</a></p>
    <p>This potential indirection allows the use of generic, human-readable URLs (such as
"<code>https://alicepay.com/</code>") to serve as <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers②">payment method identifiers</a>, while still
locating the actual <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest②">payment method manifest</a> at a different URL.</p>
    <p>For an example <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method⑦">payment method</a> AlicePay, with <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers③">payment method identifier</a> "<code>https://alicepay.com/</code>", a user agent would issue a GET request to that <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers④">payment method identifier</a> URL as follows:</p>
<pre>GET / HTTP/2
Host: alicepay.com
User-Agent: Mellblomenator/9000
</pre>
    <p>The server could then either respond with</p>
<pre>HTTP/2 204
Link: &lt;/pay/payment-manifest.json>; rel="payment-method-manifest"
</pre>
    <p>to redirect the user agent to "<code>https://alicepay.com/pay/payment-manifest.json</code>", or
could respond with the JSON contents of the payment method manifest directly in a <code>200</code>-status response.</p>
    <h3 class="heading settled" data-level="1.3" id="manifest-example"><span class="secno">1.3. </span><span class="content">Example manifest file</span><a class="self-link" href="#manifest-example"></a></h3>
    <p>Continuing our example from <a href="#accessing">§ 1.2 Accessing the manifest</a>, the AlicePay <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method⑧">payment method</a> could provide the
following <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest③">payment method manifest</a> file at <code>https://alicepay.com/pay/payment-manifest.json</code>:</p>
<pre class="highlight"><c- p>{</c->
  <c- f>"default_applications"</c-><c- p>:</c-> <c- p>[</c-><c- u>"app/webappmanifest.json"</c-><c- p>],</c->
  <c- f>"supported_origins"</c-><c- p>:</c-> <c- p>[</c->
    <c- u>"https://bobpay.xyz"</c-><c- p>,</c->
    <c- u>"https://alicepay.friendsofalice.example"</c->
  <c- p>]</c->
<c- p>}</c->
</pre>
    <p>This indicates that, if the user agent does not have a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps③">payment app</a> for AlicePay installed, it
can locate one by consulting the <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-manifest" id="ref-for-dfn-manifest①">web app manifest</a> at
"<code>https://alicepay.com/pay/app/webappmanifest.json</code>".</p>
    <p>It also indicates that, apart from this default payment app, AlicePay also allows <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps④">payment apps</a> hosted at the two indicated <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin" id="ref-for-concept-origin①">origins</a> to be used for AlicePay. This means that if the user agent
ever encounters payment apps hosted at those origins claiming support for AlicePay, it can allow
them to act as payment apps for the AlicePay <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method⑨">payment method</a>.</p>
    <p>The manifest file could also omit the "<code>supported_origins</code>" key, if no third-party <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps⑤">payment apps</a> are supported for the <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method①⓪">payment method</a> in question, or it could use the value
"<code>*</code>" instead of an array of <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin" id="ref-for-concept-origin②">origins</a>, to indicate that any third party is allowed to
support the payment method.</p>
   </div>
   <h2 class="heading settled" data-level="2" id="format"><span class="secno">2. </span><span class="content">Manifest format</span><a class="self-link" href="#format"></a></h2>
   <p>A <dfn class="dfn-paneled" data-dfn-type="dfn" data-export data-local-lt="valid|validity" id="valid-payment-method-manifest">valid payment method manifest</dfn> file is a <a data-link-type="dfn" href="https://encoding.spec.whatwg.org/#utf-8" id="ref-for-utf-8">UTF-8</a> encoded file containing contents parseable as a JSON object. The resulting JSON object must contain
at most two items, with the possible keys "<code>default_applications</code>" and
"<code>supported_origins</code>".</p>
   <p>The value of the <code>default_applications</code> key, if present, must be a non-empty JSON array.
Each item in the array must be a <a data-link-type="dfn" href="https://url.spec.whatwg.org/#valid-url-string" id="ref-for-valid-url-string">valid URL string</a> such that the resulting <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url">URL</a>'s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-scheme" id="ref-for-concept-url-scheme">scheme</a>, when parsed against the URL of the payment method manifest, is "<code>https</code>".</p>
   <p>The value of the <code>supported_origins</code> key, if present, must be either the string
"<code>*</code>", or a non-empty JSON array. In the latter case, each item in the array must be an <a data-link-type="dfn" href="https://url.spec.whatwg.org/#absolute-url-string" id="ref-for-absolute-url-string①">absolute-URL string</a> that represents an HTTPS <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin" id="ref-for-concept-origin③">origin</a>. Formally, the string must be equal to
the <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#ascii-serialisation-of-an-origin" id="ref-for-ascii-serialisation-of-an-origin">serialization</a> of the resulting parsed <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url①">URL</a>'s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-origin" id="ref-for-concept-url-origin">origin</a>.</p>
   <p>Web developers must ensure that all of their <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest④">payment method manifests</a> are <a data-link-type="dfn" href="#valid-payment-method-manifest" id="ref-for-valid-payment-method-manifest">valid</a>.</p>
   <p class="note" role="note">As with all conformance requirements on the contents of files, these are
web-developer facing, and not implementer-facing. The exact processing model (given in <a href="#processing-model">§ 3 Processing model</a>) governs how implementers process all <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest⑤">payment method manifest</a> files,
including invalid ones.</p>
   <div class="example" id="example-invalid-manifest">
    <a class="self-link" href="#example-invalid-manifest"></a> The following <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest⑥">payment method manifest</a> is not <a data-link-type="dfn" href="#valid-payment-method-manifest" id="ref-for-valid-payment-method-manifest①">valid</a>, but the currently-specified processing
  model algorithms will still accept it: 
<pre class="highlight"><c- p>{</c->
  <c- f>"default_applications"</c-><c- p>:</c-> <c- p>[</c-><c- u>"app/webappmanifest.json"</c-><c- p>],</c->
  <c- f>"created_by"</c-><c- p>:</c-> <c- u>"Alice"</c-><c- p>,</c->
  <c- f>"created_in"</c-><c- p>:</c-> <c- u>"Wonderland"</c->
<c- p>}</c->
</pre>
    <p>This could change in the future, for example if the processing model later expands to define a
  meaning for a new standard "<code>created_by</code>" key that requires it to be an object instead
  of a string. To avoid situations like this, web developers are best served by ensuring <a data-link-type="dfn" href="#valid-payment-method-manifest" id="ref-for-valid-payment-method-manifest②">validity</a> of their <a data-link-type="dfn" href="#payment-method-manifest" id="ref-for-payment-method-manifest⑦">payment method manifests</a>, and thus avoiding any unpleasant surprises.</p>
   </div>
   <h2 class="heading settled" data-level="3" id="processing-model"><span class="secno">3. </span><span class="content">Processing model</span><a class="self-link" href="#processing-model"></a></h2>
   <h3 class="heading settled" data-level="3.1" id="monkeypatch"><span class="secno">3.1. </span><span class="content">Modifications to <cite>Payment Request API</cite></span><a class="self-link" href="#monkeypatch"></a></h3>
   <p>This specification integrates with the rest of the Payment Request ecosystem by modifying the <code class="idl"><a data-link-type="idl" href="https://w3c.github.io/payment-request/#dfn-paymentrequest-paymentrequest" id="ref-for-dfn-paymentrequest-paymentrequest">PaymentRequest(methodData, details, options)</a></code> constructor. It adds the following
steps, before the algorithm completes and returns the newly-constructed <code class="idl"><a data-link-type="idl" href="https://w3c.github.io/payment-request/#dom-paymentrequest" id="ref-for-dom-paymentrequest">PaymentRequest</a></code> object.
In what follows, let <var>request</var> be the <code class="idl"><a data-link-type="idl" href="https://w3c.github.io/payment-request/#dom-paymentrequest" id="ref-for-dom-paymentrequest①">PaymentRequest</a></code> instance being constructed. <a data-link-type="biblio" href="#biblio-payment-request">[PAYMENT-REQUEST]</a></p>
   <ol>
    <li data-md>
     <p>Let <var>identifiers</var> be a list consisting of the first <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#struct-item" id="ref-for-struct-item">item</a> of each pair in <var>request</var>.<a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-serializedmethoddata" id="ref-for-dfn-serializedmethoddata">[[serializedMethodData]]</a>.</p>
    <li data-md>
     <p>Let <var>client</var> be the <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#current-settings-object" id="ref-for-current-settings-object">current settings object</a>.</p>
    <li data-md>
     <p><a data-link-type="dfn" href="#ingest-payment-method-manifests" id="ref-for-ingest-payment-method-manifests">Ingest payment method manifests</a> given <var>identifiers</var> and <var>client</var>.</p>
   </ol>
   <p>These steps are what kicks off the whole process. The rest of <a href="#processing-model">§ 3 Processing model</a> is concerned
with defining how this process eventually leads to new <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps⑥">payment apps</a> being available for the
user.</p>
   <p class="issue" id="issue-0f30c96f"><a class="self-link" href="#issue-0f30c96f"></a> As this specification gains multi-implementer interest, we anticipate moving this section
into the <cite>Payment Request API</cite> specification itself, instead of maintaining a monkeypatch
here.</p>
   <h3 class="heading settled" data-level="3.2" id="ingest"><span class="secno">3.2. </span><span class="content">Ingesting payment method manifests</span><a class="self-link" href="#ingest"></a></h3>
   <p>Given a list of <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers⑤">payment method identifiers</a> <var>identifiers</var>, as well as an <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object" id="ref-for-environment-settings-object">environment settings object</a> <var>client</var>, the user agent may run the following steps, to <dfn class="dfn-paneled" data-dfn-type="dfn" data-export id="ingest-payment-method-manifests">ingest payment method manifests</dfn>:</p>
   <ol>
    <li data-md>
     <p><a data-link-type="dfn" href="#fetch-payment-method-manifests" id="ref-for-fetch-payment-method-manifests">Fetch payment method manifests</a>, given <var>identifiers</var> and <var>client</var>, and wait for this to
 asynchronously complete with <var>manifestsMap</var>. If the result is failure, return.</p>
    <li data-md>
     <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate">For each</a> <var>identifierURL</var> → (<var>responseURL</var>, <var>manifest</var>) of <var>manifestsMap</var>:</p>
     <ol>
      <li data-md>
       <p>Let <var>parsed</var> be the result of <a data-link-type="dfn" href="#validate-and-parse-the-payment-method-manifest" id="ref-for-validate-and-parse-the-payment-method-manifest">validating and parsing</a> <var>manifest</var> given <var>responseURL</var>. If this returns failure, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue">continue</a>.</p>
      <li data-md>
       <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate①">For each</a> <var>webAppManifestURL</var> in <var>parsed</var>’s <a data-link-type="dfn" href="#parsed-payment-method-manifest-default-applications" id="ref-for-parsed-payment-method-manifest-default-applications">default
 applications</a>:</p>
       <ol>
        <li data-md>
         <p><a data-link-type="dfn" href="#fetch-the-web-app-manifest-for-a-default-payment-app" id="ref-for-fetch-the-web-app-manifest-for-a-default-payment-app">Fetch the web app manifest</a> at <var>webAppManifestURL</var> given <var>identifierURL</var> and <var>client</var>, and wait for it to asynchronously
 complete with <var>webAppManifestString</var>. If the result is failure, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue①">continue</a>.</p>
        <li data-md>
         <p>Let <var>webAppManifest</var> be the result of running the <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-processing-a-manifest" id="ref-for-dfn-processing-a-manifest">steps for processing a web app manifest</a> given <var>webAppManifestString</var>.</p>
         <p class="note" role="note">The <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-processing-a-manifest" id="ref-for-dfn-processing-a-manifest①">steps for processing a web app manifest</a> are very forgiving and will
 return empty objects or objects missing crucial fields instead of failing. User agents will
 need to separately validate the <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-processed-manifest" id="ref-for-dfn-processed-manifest">processed web app manifest</a> to ensure it contains enough
 data for their purposes in the next step.</p>
        <li data-md>
         <p>In a user-agent-specific way, use the resulting <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-processed-manifest" id="ref-for-dfn-processed-manifest①">processed web app manifest</a> <var>webAppManifest</var> to install any applicable <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps⑦">payment apps</a> for the <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method①①">payment method</a> identified by <var>identifier</var>.</p>
         <p class="note" role="note">In the future, the plan is for there to be a user-agent-independent way to
 use the resulting <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-processed-manifest" id="ref-for-dfn-processed-manifest②">processed web app manifest</a>, by consulting its <code>serviceworker</code> field and using that to install a web-based <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps⑧">payment app</a> conforming to the <cite>Payment Handler API</cite> specification. <a data-link-type="biblio" href="#biblio-payment-handler">[PAYMENT-HANDLER]</a></p>
       </ol>
      <li data-md>
       <p>Associate the <a data-link-type="dfn" href="#parsed-payment-method-manifest-supported-origins" id="ref-for-parsed-payment-method-manifest-supported-origins">supported origins</a> to <var>identifier</var> so that the
 user agent can use it in the future to determine what third-party <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps⑨">payment apps</a> can be
 displayed for the <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method①②">payment method</a> identified by <var>identifier</var>.</p>
     </ol>
   </ol>
   <h3 class="heading settled" data-level="3.3" id="fetch-pmm"><span class="secno">3.3. </span><span class="content">Fetching payment method manifests</span><a class="self-link" href="#fetch-pmm"></a></h3>
   <p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-export id="fetch-payment-method-manifests">fetch payment method manifests</dfn>, given a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list">list</a> of <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#javascript-string" id="ref-for-javascript-string">JavaScript strings</a> <var>supportedMethods</var> and an <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object" id="ref-for-environment-settings-object①">environment settings object</a> <var>client</var>, perform the following steps.
This algorithm will asynchronously complete with a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-map" id="ref-for-ordered-map">map</a> (possibly empty) from <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url②">URLs</a> to
(<a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url③">URL</a>, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#byte-sequence" id="ref-for-byte-sequence">byte sequence</a>) <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#tuple" id="ref-for-tuple">tuples</a>, mapping <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers⑥">payment method identifiers</a> to the <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url④">URL</a> and
contents of the corresponding manifest.</p>
   <ol>
    <li data-md>
     <p>Let <var>identifierURLs</var> be an empty <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list①">list</a>.</p>
    <li data-md>
     <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate②">For each</a> <var>string</var> of <var>supportedMethods</var>:</p>
     <ol>
      <li data-md>
       <p>Let <var>identifierURL</var> be the result of <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-basic-url-parser" id="ref-for-concept-basic-url-parser">basic URL parsing</a> <var>string</var>. If the
 result is failure, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue②">continue</a>.</p>
       <p class="note" role="note">The result will be failure for any <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers⑦">payment method identifier</a> that is not a <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-url-based-payment-method-identifiers" id="ref-for-dfn-url-based-payment-method-identifiers①">URL-based payment method identifier</a>, i.e. for a <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-standardized-payment-method-identifiers" id="ref-for-dfn-standardized-payment-method-identifiers">standardized payment method identifier</a>.</p>
      <li data-md>
       <p>If <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-validate-a-url-based-payment-method-identifier" id="ref-for-dfn-validate-a-url-based-payment-method-identifier">validating</a> <var>identifierURL</var> returns false, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue③">continue</a>.</p>
      <li data-md>
       <p>Optionally, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue④">continue</a>.</p>
       <p class="note" role="note">This step allows implementations to skip any of the provided <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers" id="ref-for-dfn-payment-method-identifiers⑧">payment method
 identifiers</a> for user-agent-specific reasons. <a href="#security">§ 4 Security and privacy considerations</a> discusses some reasons why user
 agents might prefer to only ingest certain identifiers.</p>
      <li data-md>
       <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-append" id="ref-for-list-append">Append</a> <var>identifierURL</var> to <var>identifierURLs</var>.</p>
     </ol>
    <li data-md>
     <p>Let <var>manifestsMap</var> be an empty <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-map" id="ref-for-ordered-map①">map</a>.</p>
    <li data-md>
     <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate③">For each</a> <var>identifierURL</var> of <var>identifierURLs</var>:</p>
     <ol>
      <li data-md>
       <p>Let <var>manifestURLString</var> be null.</p>
      <li data-md>
       <p>Let <var>identifierRequest</var> be a new <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request" id="ref-for-concept-request">request</a> whose <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-method" id="ref-for-concept-request-method">method</a> is `<code>GET</code>`, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-url" id="ref-for-concept-request-url">url</a> is <var>identifierURL</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-client" id="ref-for-concept-request-client">client</a> is <var>client</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-mode" id="ref-for-concept-request-mode">mode</a> is
 "<code>cors</code>", <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-credentials-mode" id="ref-for-concept-request-credentials-mode">credentials mode</a> is "<code>omit</code>", <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-redirect-mode" id="ref-for-concept-request-redirect-mode">redirect mode</a> is "<code>error</code>", and <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-referrer-policy" id="ref-for-concept-request-referrer-policy">referrer policy</a> is
 "<code>strict-origin-when-cross-origin</code>".</p>
      <li data-md>
       <p><a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-fetch" id="ref-for-concept-fetch">Fetch</a> <var>identifierRequest</var>.</p>
       <p>To <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#process-response" id="ref-for-process-response">process response</a> with the <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response" id="ref-for-concept-response">response</a> <var>identifierResponse</var>:</p>
       <ol>
        <li data-md>
         <p>If <var>identifierResponse</var> is a <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-network-error" id="ref-for-concept-network-error">network error</a> or <var>identifierResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-status" id="ref-for-concept-response-status">status</a> is not an <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#ok-status" id="ref-for-ok-status">ok status</a>, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue⑤">continue</a>.</p>
        <li data-md>
         <p>Let <var>linkHeaders</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#extract-header-list-values" id="ref-for-extract-header-list-values">extracting header list values</a> given `<code>Link</code>` and <var>identifierResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-header-list" id="ref-for-concept-response-header-list">header list</a>.</p>
        <li data-md>
         <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate④">For each</a> <var>linkHeader</var> of <var>linkHeaders</var>:</p>
         <ol>
          <li data-md>
           <p>Parse <var>linkHeader</var> according to the <code>link-value</code> production. If it cannot be
 parsed, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue⑥">continue</a>. <a data-link-type="biblio" href="#biblio-rfc8288">[RFC8288]</a></p>
          <li data-md>
           <p>If the parsed header contains a parameter whose name is an <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" id="ref-for-ascii-case-insensitive">ASCII case-insensitive</a> match
 for the string "<code>rel</code>" and whose value is an <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ascii-case-insensitive" id="ref-for-ascii-case-insensitive①">ASCII case-insensitive</a> match
 for the string "<code>payment-method-manifest</code>", then set <var>manifestURLString</var> to the
 string given by the <code>URI-Reference</code> production in the parsed header, and <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-break" id="ref-for-iteration-break">break</a>.</p>
         </ol>
        <li data-md>
         <p>If <var>manifestURLString</var> is not null, then:</p>
         <ol>
          <li data-md>
           <p><a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-fetch-terminate" id="ref-for-concept-fetch-terminate">Terminate</a> the ongoing fetch of <var>identifierRequest</var> (since the <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-body" id="ref-for-concept-response-body">body</a> will not be needed).</p>
          <li data-md>
           <p>Let <var>manifestURL</var> be the result of <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-basic-url-parser" id="ref-for-concept-basic-url-parser①">basic URL parsing</a> <var>manifestURLString</var> with base URL given by <var>identifierResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-url" id="ref-for-concept-response-url">url</a>. If the
 result is failure, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue⑦">continue</a>.</p>
          <li data-md>
           <p>If <var>manifestURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-scheme" id="ref-for-concept-url-scheme①">scheme</a> is not "<code>https</code>", <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue⑧">continue</a>.</p>
          <li data-md>
           <p>Let <var>manifestRequest</var> be a new <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request" id="ref-for-concept-request①">request</a> whose <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-url" id="ref-for-concept-request-url①">url</a> is <var>manifestURL</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-client" id="ref-for-concept-request-client①">client</a> is <var>client</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-referrer" id="ref-for-concept-request-referrer">referrer</a> is <var>identifierResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-url" id="ref-for-concept-response-url①">url</a>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-mode" id="ref-for-concept-request-mode①">mode</a> is "<code>cors</code>", <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-credentials-mode" id="ref-for-concept-request-credentials-mode①">credentials mode</a> is
 "<code>omit</code>", and <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-redirect-mode" id="ref-for-concept-request-redirect-mode①">redirect mode</a> is "<code>error</code>".</p>
          <li data-md>
           <p><a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-fetch" id="ref-for-concept-fetch①">Fetch</a> <var>manifestRequest</var>. To <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#process-response-end-of-body" id="ref-for-process-response-end-of-body">process response end-of-body</a> with the <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response" id="ref-for-concept-response①">response</a> <var>manifestResponse</var>:</p>
           <ol>
            <li data-md>
             <p>If <var>manifestResponse</var> is a <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-network-error" id="ref-for-concept-network-error①">network error</a> or <var>manifestResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-status" id="ref-for-concept-response-status①">status</a> is not an <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#ok-status" id="ref-for-ok-status①">ok status</a>, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue⑨">continue</a>.</p>
            <li data-md>
             <p>Let <var>body</var> be <var>manifestResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-body" id="ref-for-concept-response-body①">body</a>.</p>
            <li data-md>
             <p>If <var>body</var> is null, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue①⓪">continue</a>.</p>
            <li data-md>
             <p>Let <var>reader</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-get-reader" id="ref-for-concept-get-reader">getting a reader</a> from <var>body</var>.</p>
            <li data-md>
             <p>Let <var>promise</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-read-all-bytes-from-readablestream" id="ref-for-concept-read-all-bytes-from-readablestream">reading all bytes</a> from <var>body</var> with <var>reader</var>.</p>
            <li data-md>
             <p><a data-link-type="dfn" href="https://www.w3.org/2001/tag/doc/promises-guide/#upon-fulfillment" id="ref-for-upon-fulfillment">Upon fulfillment</a> of <var>promise</var> with a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#byte-sequence" id="ref-for-byte-sequence①">byte sequence</a> <var>bytes</var>, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set">set</a> <var>manifestsMap</var>[<var>identifierURL</var>] to (<var>response</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-url" id="ref-for-concept-response-url②">URL</a>, <var>bytes</var>).</p>
           </ol>
         </ol>
       </ol>
       <p>To <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#process-response-end-of-body" id="ref-for-process-response-end-of-body①">process response end-of-body</a> with the <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response" id="ref-for-concept-response②">response</a> <var>identifierResponse</var>:</p>
       <ol>
        <li data-md>
         <p>If <var>manifestURLString</var> is not null, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue①①">continue</a>.</p>
        <li data-md>
         <p>Let <var>body</var> be <var>identifierResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-body" id="ref-for-concept-response-body②">body</a>.</p>
        <li data-md>
         <p>If <var>body</var> is null, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#iteration-continue" id="ref-for-iteration-continue①②">continue</a>.</p>
        <li data-md>
         <p>Let <var>reader</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-get-reader" id="ref-for-concept-get-reader①">getting a reader</a> from <var>body</var>.</p>
        <li data-md>
         <p>Let <var>promise</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-read-all-bytes-from-readablestream" id="ref-for-concept-read-all-bytes-from-readablestream①">reading all bytes</a> from <var>body</var> with <var>reader</var>.</p>
        <li data-md>
         <p><a data-link-type="dfn" href="https://www.w3.org/2001/tag/doc/promises-guide/#upon-fulfillment" id="ref-for-upon-fulfillment①">Upon fulfillment</a> of <var>promise</var> with a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#byte-sequence" id="ref-for-byte-sequence②">byte sequence</a> <var>bytes</var>, <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-set" id="ref-for-map-set①">set</a> <var>manifestsMap</var>[<var>identifierURL</var>] to (<var>identifierResponse</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-url" id="ref-for-concept-response-url③">URL</a>, <var>bytes</var>).</p>
       </ol>
     </ol>
    <li data-md>
     <p>Once all ongoing <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-fetch" id="ref-for-concept-fetch②">fetch</a> algorithms initiated by the above steps are complete, including the
 specified <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#process-response" id="ref-for-process-response①">process response</a> and <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#process-response-end-of-body" id="ref-for-process-response-end-of-body②">process response end-of-body</a> steps, asynchronously
 complete this algorithm with <var>manifestsMap</var>.</p>
   </ol>
   <h3 class="heading settled" data-level="3.4" id="validate-and-parse"><span class="secno">3.4. </span><span class="content">Validating and parsing payment method manifests</span><a class="self-link" href="#validate-and-parse"></a></h3>
   <p>A <dfn class="dfn-paneled" data-dfn-type="dfn" data-export id="parsed-payment-method-manifest">parsed payment method manifest</dfn> is a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#struct" id="ref-for-struct">struct</a> containing two fields:</p>
   <dl>
    <dt data-md><dfn class="dfn-paneled" data-dfn-for="parsed payment method manifest" data-dfn-type="dfn" data-export id="parsed-payment-method-manifest-default-applications">default applications</dfn>
    <dd data-md>
     <p>An <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-set" id="ref-for-ordered-set">ordered set</a> of <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url⑤">URLs</a>, possibly empty</p>
    <dt data-md><dfn class="dfn-paneled" data-dfn-for="parsed payment method manifest" data-dfn-type="dfn" data-export id="parsed-payment-method-manifest-supported-origins">supported origins</dfn>
    <dd data-md>
     <p>Either the string "<code>*</code>", or an <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-set" id="ref-for-ordered-set①">ordered set</a> of <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin" id="ref-for-concept-origin④">origins</a></p>
   </dl>
   <p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-export data-lt="validate and parse the payment method manifest" id="validate-and-parse-the-payment-method-manifest">validate and parse</dfn> a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#byte-sequence" id="ref-for-byte-sequence③">byte sequence</a> <var>bytes</var> purporting to contain a payment method manifest, given a <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url⑥">URL</a> <var>url</var>,
perform the following steps. The result will either be a <a data-link-type="dfn" href="#parsed-payment-method-manifest" id="ref-for-parsed-payment-method-manifest">parsed payment method manifest</a>, or
failure.</p>
   <ol>
    <li data-md>
     <p>Let <var>string</var> be the result of <a data-link-type="dfn" href="https://encoding.spec.whatwg.org/#utf-8-decode" id="ref-for-utf-8-decode">UTF-8 decoding</a> <var>bytes</var>.</p>
    <li data-md>
     <p>Let <var>parsed</var> be the result of <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#parse-json-into-infra-values" id="ref-for-parse-json-into-infra-values">parsing JSON into Infra values</a> given <var>string</var>. If this throws an exception, return failure.</p>
    <li data-md>
     <p>If <var>parsed</var> is not an <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-map" id="ref-for-ordered-map②">ordered map</a>, return failure.</p>
    <li data-md>
     <p>Let <var>defaultApps</var> be an empty <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-set" id="ref-for-ordered-set②">ordered set</a>.</p>
    <li data-md>
     <p>If <var>parsed</var>["<code>default_applications</code>"] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists">exists</a>:</p>
     <ol>
      <li data-md>
       <p>Let <var>defaultAppsValue</var> be <var>parsed</var>["<code>default_applications</code>"].</p>
      <li data-md>
       <p>If <var>defaultAppsValue</var> is not a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list②">list</a>, return failure.</p>
      <li data-md>
       <p>If the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size">size</a> of <var>defaultAppsValue</var> is 0, return failure.</p>
      <li data-md>
       <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑤">For each</a> <var>defaultApp</var> in <var>defaultAppsValue</var>:</p>
       <ol>
        <li data-md>
         <p>If <var>defaultApp</var> is not a string, return failure.</p>
        <li data-md>
         <p>Let <var>defaultAppURL</var> be the result of <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-basic-url-parser" id="ref-for-concept-basic-url-parser②">basic URL parsing</a> <var>defaultApp</var>, given the base URL <var>url</var>. If the result is failure, return failure.</p>
        <li data-md>
         <p>If <var>defaultAppURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-scheme" id="ref-for-concept-url-scheme②">scheme</a> is not "<code>https</code>", return failure.</p>
        <li data-md>
         <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#set-append" id="ref-for-set-append">Append</a> <var>defaultAppURL</var> to <var>defaultApps</var>.</p>
       </ol>
     </ol>
    <li data-md>
     <p>Let <var>supportedOrigins</var> be an empty <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#ordered-set" id="ref-for-ordered-set③">ordered set</a>.</p>
    <li data-md>
     <p>If <var>parsed</var>["<code>supported_origins</code>"] <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#map-exists" id="ref-for-map-exists①">exists</a>:</p>
     <ol>
      <li data-md>
       <p>Let <var>supportedOriginsValue</var> be <var>parsed</var>["<code>supported_origins</code>"].</p>
      <li data-md>
       <p>If <var>supportedOriginsValue</var> is "<code>*</code>", set <var>supportedOrigins</var> to "<code>*</code>".</p>
      <li data-md>
       <p>Otherwise:</p>
       <ol>
        <li data-md>
         <p>If <var>supportedOriginsValue</var> is not a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list" id="ref-for-list③">list</a>, return failure.</p>
        <li data-md>
         <p>If the <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size①">size</a> of <var>supportedOriginsValue</var> is 0, return failure.</p>
        <li data-md>
         <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-iterate" id="ref-for-list-iterate⑥">For each</a> <var>supportedOrigin</var> in <var>supportedOriginsValue</var>:</p>
         <ol>
          <li data-md>
           <p>If <var>supportedOrigin</var> is not a string, return failure.</p>
          <li data-md>
           <p>Let <var>supportedOriginURL</var> be the result of <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-basic-url-parser" id="ref-for-concept-basic-url-parser③">basic URL parsing</a> <var>supportedOrigin</var>. If the result is failure, return failure.</p>
          <li data-md>
           <p>If <var>supportedOriginURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-scheme" id="ref-for-concept-url-scheme③">scheme</a> is not "<code>https</code>", return failure.</p>
          <li data-md>
           <p>If <var>supportedOriginURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-username" id="ref-for-concept-url-username">username</a> or <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-password" id="ref-for-concept-url-password">password</a> are not the empty string,
return failure.</p>
          <li data-md>
           <p>If <var>supportedOriginURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-path" id="ref-for-concept-url-path">path</a>'s <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#list-size" id="ref-for-list-size②">size</a> is not 0, return failure.</p>
          <li data-md>
           <p>If <var>supportedOriginURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-query" id="ref-for-concept-url-query">query</a> or <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-fragment" id="ref-for-concept-url-fragment">fragment</a> are not null, return failure.</p>
          <li data-md>
           <p><a data-link-type="dfn" href="https://infra.spec.whatwg.org/#set-append" id="ref-for-set-append①">Append</a> <var>supportedOriginURL</var>’s <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-origin" id="ref-for-concept-url-origin①">origin</a> to <var>supportedOrigins</var>.</p>
         </ol>
       </ol>
     </ol>
    <li data-md>
     <p>Return a new <a data-link-type="dfn" href="#parsed-payment-method-manifest" id="ref-for-parsed-payment-method-manifest①">parsed payment method manifest</a> with <a data-link-type="dfn" href="#parsed-payment-method-manifest-default-applications" id="ref-for-parsed-payment-method-manifest-default-applications①">default applications</a> given by <var>defaultApps</var> and <a data-link-type="dfn" href="#parsed-payment-method-manifest-supported-origins" id="ref-for-parsed-payment-method-manifest-supported-origins①">supported origins</a> given by <var>supportedOrigins</var>.</p>
   </ol>
   <div class="note" role="note">
     Empty arrays for "<code>default_applications</code>" or "<code>supported_origins</code>"
  will cause parsing to fail. That is, this is not a <a data-link-type="dfn" href="#valid-payment-method-manifest" id="ref-for-valid-payment-method-manifest③">valid payment method manifest</a>, and will
  be rejected by the above algorithm: 
<pre class="highlight"><c- p>{</c->
  <c- f>"default_applications"</c-><c- p>:</c-> <c- p>[</c-><c- u>"https://alicepay.com/pay/app/webappmanifest.json"</c-><c- p>],</c->
  <c- f>"supported_origins"</c-><c- p>:</c-> <c- p>[]</c->
<c- p>}</c->
</pre>
   </div>
   <h3 class="heading settled" data-level="3.5" id="fetch-wam"><span class="secno">3.5. </span><span class="content">Fetching web app manifests</span><a class="self-link" href="#fetch-wam"></a></h3>
   <p>Because the determination of <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps①⓪">payment apps</a> happens independent of any embedding HTML document,
the procedure for obtaining a <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-manifest" id="ref-for-dfn-manifest②">web app manifest</a> that gives information about a default payment
app is different from the usual <a data-link-type="dfn" href="https://www.w3.org/TR/appmanifest/#dfn-obtaining-the-manifest" id="ref-for-dfn-obtaining-the-manifest">steps for obtaining a web app manifest</a>.</p>
   <p>To <dfn class="dfn-paneled" data-dfn-type="dfn" data-export id="fetch-the-web-app-manifest-for-a-default-payment-app">fetch the web app manifest for a default payment app</dfn>, given a <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url" id="ref-for-concept-url⑦">URL</a> <var>url</var>, a
URL <var>referrer</var>, and an <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object" id="ref-for-environment-settings-object②">environment settings object</a> <var>client</var>, perform the following steps. This
algorithm will asynchronously complete with either a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#scalar-value-string" id="ref-for-scalar-value-string">scalar value string</a> or failure.</p>
   <ol>
    <li data-md>
     <p>Let <var>request</var> be a new <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request" id="ref-for-concept-request②">request</a> whose <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-url" id="ref-for-concept-request-url②">url</a> is <var>url</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-client" id="ref-for-concept-request-client②">client</a> is <var>client</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-referrer" id="ref-for-concept-request-referrer①">referrer</a> is <var>referrer</var>, <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-mode" id="ref-for-concept-request-mode②">mode</a> is "<code>cors</code>", <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-credentials-mode" id="ref-for-concept-request-credentials-mode②">credentials mode</a> is "<code>omit</code>", and <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-redirect-mode" id="ref-for-concept-request-redirect-mode②">redirect mode</a> is
 "<code>error</code>".</p>
    <li data-md>
     <p><a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-fetch" id="ref-for-concept-fetch③">Fetch</a> <var>request</var>. To <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#process-response-end-of-body" id="ref-for-process-response-end-of-body③">process response end-of-body</a> with the <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response" id="ref-for-concept-response③">response</a> <var>response</var>:</p>
     <ol>
      <li data-md>
       <p>If <var>response</var> is a <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-network-error" id="ref-for-concept-network-error②">network error</a> or <var>response</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-status" id="ref-for-concept-response-status②">status</a> is not an <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#ok-status" id="ref-for-ok-status②">ok status</a>, asynchronously complete this algorithm with failure.</p>
      <li data-md>
       <p>Let <var>body</var> be <var>response</var>’s <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-response-body" id="ref-for-concept-response-body③">body</a>.</p>
      <li data-md>
       <p>If <var>body</var> is null, asynchronously complete this algorithm with failure.</p>
      <li data-md>
       <p>Let <var>reader</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-get-reader" id="ref-for-concept-get-reader②">getting a reader</a> from <var>body</var>.</p>
      <li data-md>
       <p>Let <var>promise</var> be the result of <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-read-all-bytes-from-readablestream" id="ref-for-concept-read-all-bytes-from-readablestream②">reading all bytes</a> from <var>body</var> with <var>reader</var>.</p>
      <li data-md>
       <p><a data-link-type="dfn" href="https://www.w3.org/2001/tag/doc/promises-guide/#upon-fulfillment" id="ref-for-upon-fulfillment②">Upon fulfillment</a> of <var>promise</var> with a <a data-link-type="dfn" href="https://infra.spec.whatwg.org/#byte-sequence" id="ref-for-byte-sequence④">byte sequence</a> <var>bytes</var>, asynchronously complete
  this algorithm with the result of <a data-link-type="dfn" href="https://encoding.spec.whatwg.org/#utf-8-decode" id="ref-for-utf-8-decode①">UTF-8 decoding</a> <var>bytes</var>.</p>
      <li data-md>
       <p><a data-link-type="dfn" href="https://www.w3.org/2001/tag/doc/promises-guide/#upon-rejection" id="ref-for-upon-rejection">Upon rejection</a> of <var>promise</var>, asynchronously complete this algorithm with failure.</p>
     </ol>
   </ol>
   <h2 class="heading settled" data-level="4" id="security"><span class="secno">4. </span><span class="content">Security and privacy considerations</span><a class="self-link" href="#security"></a></h2>
   <h3 class="heading settled" data-level="4.1" id="revealing-to-providers"><span class="secno">4.1. </span><span class="content">Revealing user activity to payment providers</span><a class="self-link" href="#revealing-to-providers"></a></h3>
   <p><a data-link-type="dfn" href="#ingest-payment-method-manifests" id="ref-for-ingest-payment-method-manifests①">Ingesting payment method manifests</a> might reveal information
to a payment service about the activity of an end user. For example, a <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method①③">payment method</a> that is
only supported on one website might allow that payment provider to discover the IP addresses of
users who visit that website.</p>
   <p>One way to mitigate this is to <a data-link-type="dfn" href="#fetch-payment-method-manifests" id="ref-for-fetch-payment-method-manifests①">fetch the manifests</a> only for the <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-apps" id="ref-for-dfn-payment-apps①①">payment apps</a> that the user has installed or has explicitly expressed interest in. This confines
the risk to only sharing the user’s IP address with those parties.</p>
   <p>Another important mitigation is already built in to the spec, by setting the appropriate <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-referrer-policy" id="ref-for-concept-request-referrer-policy①">referrer policy</a> and <a data-link-type="dfn" href="https://fetch.spec.whatwg.org/#concept-request-referrer" id="ref-for-concept-request-referrer②">referrer</a> on the various fetches performed here. These
requirements ensure that only the server that controls the <a data-link-type="dfn" href="https://w3c.github.io/payment-method-id/#dfn-url-based-payment-method-identifiers" id="ref-for-dfn-url-based-payment-method-identifiers②">identifier URL</a> will see the user’s activity, and even then will only see the <a data-link-type="dfn" href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin" id="ref-for-concept-origin⑤">origin</a> of the web page that is creating the <code class="idl"><a data-link-type="idl" href="https://w3c.github.io/payment-request/#dom-paymentrequest" id="ref-for-dom-paymentrequest②">PaymentRequest</a></code> object (instead of seeing the full URL).</p>
   <h3 class="heading settled" data-level="4.2" id="development-environments"><span class="secno">4.2. </span><span class="content">Considerations for development environments</span><a class="self-link" href="#development-environments"></a></h3>
   <p>In development situations, a user agent might lower the security requirements of this specification
to ease testing. For example, the requirements in the <a data-link-type="dfn" href="#fetch-payment-method-manifests" id="ref-for-fetch-payment-method-manifests②">fetch payment method manifests</a> and <a data-link-type="dfn" href="#validate-and-parse-the-payment-method-manifest" id="ref-for-validate-and-parse-the-payment-method-manifest①">validate and parse the payment method manifest</a> algorithms requiring a "<code>https</code>" <a data-link-type="dfn" href="https://url.spec.whatwg.org/#concept-url-scheme" id="ref-for-concept-url-scheme④">scheme</a> might be dropped in a development environment. In such situations, the user agent is
intentionally not complying with this specification, and should notify the user of the reduced
security.</p>
   <h3 class="heading settled" data-level="4.3" id="matching-payment-apps"><span class="secno">4.3. </span><span class="content">Matching payment apps</span><a class="self-link" href="#matching-payment-apps"></a></h3>
   <p class="issue" id="issue-d41d8cd9"><a class="self-link" href="#issue-d41d8cd9"></a> <a href="https://github.com/w3c/payment-method-manifest/issues/11">&lt;https://github.com/w3c/payment-method-manifest/issues/11></a></p>
   <h2 class="heading settled" data-level="5" id="iana"><span class="secno">5. </span><span class="content">IANA considerations</span><a class="self-link" href="#iana"></a></h2>
   <h3 class="heading settled" data-level="5.1" id="payment-method-manifest-link"><span class="secno">5.1. </span><span class="content">The <code>payment-method-manifest</code> link relation</span><a class="self-link" href="#payment-method-manifest-link"></a></h3>
   <p>This registration is for community review and will be submitted to the IESG for review, approval,
and registration with IANA.</p>
   <dl>
    <dt data-md>Relation name
    <dd data-md>
     <p>payment-method-manifest</p>
    <dt data-md>Description
    <dd data-md>
     <p>Links to a payment method manifest, which describes a specific <a data-link-type="dfn" href="https://w3c.github.io/payment-request/#dfn-payment-method" id="ref-for-dfn-payment-method①④">payment method</a> within the Web
 Payments ecosystem.</p>
    <dt data-md>Reference
    <dd data-md>
     <p><a href="https://w3c.github.io/payment-method-manifest/">https://w3c.github.io/payment-method-manifest/</a></p>
    <dt data-md>Notes
    <dd data-md>
     <p>See <a href="#fetch-pmm">§ 3.3 Fetching payment method manifests</a> for the specific manner in which such links are expected to be fetched, and <a href="#ingest">§ 3.2 Ingesting payment method manifests</a> for the larger context in which they are used.</p>
   </dl>
   <h2 class="no-num heading settled" id="acknowledgments"><span class="content">Acknowledgments</span><a class="self-link" href="#acknowledgments"></a></h2>
   <p><a href="#processing-model">§ 3 Processing model</a> is based heavily on algorithms originally outlined by Rouslan Solomakhin.</p>
   <p>Thanks to
Andrew Betts,
Anne van Kesteren,
Ian Jacobs,
L. David Baron,
Marcos Cáceres, and
Rouslan Solomakhin for their contributions to making this specification awesome!</p>
   <p id="back-to-top" role="navigation"><a href="#toc"><abbr title="Back to Top">↑</abbr></a></p>
<script src="https://www.w3.org/scripts/TR/2016/fixup.js"></script>
  </main>
  <h2 class="no-num no-ref heading settled" id="index"><span class="content">Index</span><a class="self-link" href="#index"></a></h2>
  <h3 class="no-num no-ref heading settled" id="index-defined-here"><span class="content">Terms defined by this specification</span><a class="self-link" href="#index-defined-here"></a></h3>
  <ul class="index">
   <li><a href="#parsed-payment-method-manifest-default-applications">default applications</a><span>, in §3.4</span>
   <li><a href="#fetch-payment-method-manifests">fetch payment method manifests</a><span>, in §3.3</span>
   <li><a href="#fetch-the-web-app-manifest-for-a-default-payment-app">fetch the web app manifest for a default payment app</a><span>, in §3.5</span>
   <li><a href="#ingest-payment-method-manifests">ingest payment method manifests</a><span>, in §3.2</span>
   <li><a href="#parsed-payment-method-manifest">parsed payment method manifest</a><span>, in §3.4</span>
   <li><a href="#payment-method-manifest">payment method manifest</a><span>, in §Unnumbered section</span>
   <li><a href="#parsed-payment-method-manifest-supported-origins">supported origins</a><span>, in §3.4</span>
   <li><a href="#valid-payment-method-manifest">valid</a><span>, in §2</span>
   <li><a href="#validate-and-parse-the-payment-method-manifest">validate and parse the payment method manifest</a><span>, in §3.4</span>
   <li><a href="#valid-payment-method-manifest">validity</a><span>, in §2</span>
   <li><a href="#valid-payment-method-manifest">valid payment method manifest</a><span>, in §2</span>
  </ul>
  <aside class="dfn-panel" data-for="term-for-dfn-processed-manifest">
   <a href="https://www.w3.org/TR/appmanifest/#dfn-processed-manifest">https://www.w3.org/TR/appmanifest/#dfn-processed-manifest</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-processed-manifest">3.2. Ingesting payment method manifests</a> <a href="#ref-for-dfn-processed-manifest①">(2)</a> <a href="#ref-for-dfn-processed-manifest②">(3)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-obtaining-the-manifest">
   <a href="https://www.w3.org/TR/appmanifest/#dfn-obtaining-the-manifest">https://www.w3.org/TR/appmanifest/#dfn-obtaining-the-manifest</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-obtaining-the-manifest">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-processing-a-manifest">
   <a href="https://www.w3.org/TR/appmanifest/#dfn-processing-a-manifest">https://www.w3.org/TR/appmanifest/#dfn-processing-a-manifest</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-processing-a-manifest">3.2. Ingesting payment method manifests</a> <a href="#ref-for-dfn-processing-a-manifest①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-manifest-url">
   <a href="https://www.w3.org/TR/appmanifest/#dfn-manifest-url">https://www.w3.org/TR/appmanifest/#dfn-manifest-url</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-manifest-url">1.1. Use cases</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-manifest">
   <a href="https://www.w3.org/TR/appmanifest/#dfn-manifest">https://www.w3.org/TR/appmanifest/#dfn-manifest</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-manifest">1.1. Use cases</a>
    <li><a href="#ref-for-dfn-manifest①">1.3. Example manifest file</a>
    <li><a href="#ref-for-dfn-manifest②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-utf-8">
   <a href="https://encoding.spec.whatwg.org/#utf-8">https://encoding.spec.whatwg.org/#utf-8</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-utf-8">2. Manifest format</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-utf-8-decode">
   <a href="https://encoding.spec.whatwg.org/#utf-8-decode">https://encoding.spec.whatwg.org/#utf-8-decode</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-utf-8-decode">3.4. Validating and parsing payment method manifests</a>
    <li><a href="#ref-for-utf-8-decode①">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-response-body">
   <a href="https://fetch.spec.whatwg.org/#concept-response-body">https://fetch.spec.whatwg.org/#concept-response-body</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-response-body">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-response-body①">(2)</a> <a href="#ref-for-concept-response-body②">(3)</a>
    <li><a href="#ref-for-concept-response-body③">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-client">
   <a href="https://fetch.spec.whatwg.org/#concept-request-client">https://fetch.spec.whatwg.org/#concept-request-client</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-client">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-request-client①">(2)</a>
    <li><a href="#ref-for-concept-request-client②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-credentials-mode">
   <a href="https://fetch.spec.whatwg.org/#concept-request-credentials-mode">https://fetch.spec.whatwg.org/#concept-request-credentials-mode</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-credentials-mode">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-request-credentials-mode①">(2)</a>
    <li><a href="#ref-for-concept-request-credentials-mode②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-extract-header-list-values">
   <a href="https://fetch.spec.whatwg.org/#extract-header-list-values">https://fetch.spec.whatwg.org/#extract-header-list-values</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-extract-header-list-values">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-fetch">
   <a href="https://fetch.spec.whatwg.org/#concept-fetch">https://fetch.spec.whatwg.org/#concept-fetch</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-fetch">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-fetch①">(2)</a> <a href="#ref-for-concept-fetch②">(3)</a>
    <li><a href="#ref-for-concept-fetch③">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-get-reader">
   <a href="https://fetch.spec.whatwg.org/#concept-get-reader">https://fetch.spec.whatwg.org/#concept-get-reader</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-get-reader">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-get-reader①">(2)</a>
    <li><a href="#ref-for-concept-get-reader②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-response-header-list">
   <a href="https://fetch.spec.whatwg.org/#concept-response-header-list">https://fetch.spec.whatwg.org/#concept-response-header-list</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-response-header-list">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-method">
   <a href="https://fetch.spec.whatwg.org/#concept-request-method">https://fetch.spec.whatwg.org/#concept-request-method</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-method">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-mode">
   <a href="https://fetch.spec.whatwg.org/#concept-request-mode">https://fetch.spec.whatwg.org/#concept-request-mode</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-mode">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-request-mode①">(2)</a>
    <li><a href="#ref-for-concept-request-mode②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-network-error">
   <a href="https://fetch.spec.whatwg.org/#concept-network-error">https://fetch.spec.whatwg.org/#concept-network-error</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-network-error">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-network-error①">(2)</a>
    <li><a href="#ref-for-concept-network-error②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-ok-status">
   <a href="https://fetch.spec.whatwg.org/#ok-status">https://fetch.spec.whatwg.org/#ok-status</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ok-status">3.3. Fetching payment method manifests</a> <a href="#ref-for-ok-status①">(2)</a>
    <li><a href="#ref-for-ok-status②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-process-response">
   <a href="https://fetch.spec.whatwg.org/#process-response">https://fetch.spec.whatwg.org/#process-response</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-process-response">3.3. Fetching payment method manifests</a> <a href="#ref-for-process-response①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-process-response-end-of-body">
   <a href="https://fetch.spec.whatwg.org/#process-response-end-of-body">https://fetch.spec.whatwg.org/#process-response-end-of-body</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-process-response-end-of-body">3.3. Fetching payment method manifests</a> <a href="#ref-for-process-response-end-of-body①">(2)</a> <a href="#ref-for-process-response-end-of-body②">(3)</a>
    <li><a href="#ref-for-process-response-end-of-body③">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-read-all-bytes-from-readablestream">
   <a href="https://fetch.spec.whatwg.org/#concept-read-all-bytes-from-readablestream">https://fetch.spec.whatwg.org/#concept-read-all-bytes-from-readablestream</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-read-all-bytes-from-readablestream">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-read-all-bytes-from-readablestream①">(2)</a>
    <li><a href="#ref-for-concept-read-all-bytes-from-readablestream②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-redirect-mode">
   <a href="https://fetch.spec.whatwg.org/#concept-request-redirect-mode">https://fetch.spec.whatwg.org/#concept-request-redirect-mode</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-redirect-mode">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-request-redirect-mode①">(2)</a>
    <li><a href="#ref-for-concept-request-redirect-mode②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-referrer">
   <a href="https://fetch.spec.whatwg.org/#concept-request-referrer">https://fetch.spec.whatwg.org/#concept-request-referrer</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-referrer">3.3. Fetching payment method manifests</a>
    <li><a href="#ref-for-concept-request-referrer①">3.5. Fetching web app manifests</a>
    <li><a href="#ref-for-concept-request-referrer②">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request-referrer-policy">
   <a href="https://fetch.spec.whatwg.org/#concept-request-referrer-policy">https://fetch.spec.whatwg.org/#concept-request-referrer-policy</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request-referrer-policy">3.3. Fetching payment method manifests</a>
    <li><a href="#ref-for-concept-request-referrer-policy①">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-request">
   <a href="https://fetch.spec.whatwg.org/#concept-request">https://fetch.spec.whatwg.org/#concept-request</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-request">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-request①">(2)</a>
    <li><a href="#ref-for-concept-request②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-response">
   <a href="https://fetch.spec.whatwg.org/#concept-response">https://fetch.spec.whatwg.org/#concept-response</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-response">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-response①">(2)</a> <a href="#ref-for-concept-response②">(3)</a>
    <li><a href="#ref-for-concept-response③">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-response-status">
   <a href="https://fetch.spec.whatwg.org/#concept-response-status">https://fetch.spec.whatwg.org/#concept-response-status</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-response-status">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-response-status①">(2)</a>
    <li><a href="#ref-for-concept-response-status②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-fetch-terminate">
   <a href="https://fetch.spec.whatwg.org/#concept-fetch-terminate">https://fetch.spec.whatwg.org/#concept-fetch-terminate</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-fetch-terminate">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-response-url">
   <a href="https://fetch.spec.whatwg.org/#concept-response-url">https://fetch.spec.whatwg.org/#concept-response-url</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-response-url">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-response-url①">(2)</a> <a href="#ref-for-concept-response-url②">(3)</a> <a href="#ref-for-concept-response-url③">(4)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-current-settings-object">
   <a href="https://html.spec.whatwg.org/multipage/webappapis.html#current-settings-object">https://html.spec.whatwg.org/multipage/webappapis.html#current-settings-object</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-current-settings-object">3.1. Modifications to Payment Request API</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-environment-settings-object">
   <a href="https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object">https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-environment-settings-object">3.2. Ingesting payment method manifests</a>
    <li><a href="#ref-for-environment-settings-object①">3.3. Fetching payment method manifests</a>
    <li><a href="#ref-for-environment-settings-object②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-origin">
   <a href="https://html.spec.whatwg.org/multipage/origin.html#concept-origin">https://html.spec.whatwg.org/multipage/origin.html#concept-origin</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-origin">1.1. Use cases</a>
    <li><a href="#ref-for-concept-origin①">1.3. Example manifest file</a> <a href="#ref-for-concept-origin②">(2)</a>
    <li><a href="#ref-for-concept-origin③">2. Manifest format</a>
    <li><a href="#ref-for-concept-origin④">3.4. Validating and parsing payment method manifests</a>
    <li><a href="#ref-for-concept-origin⑤">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-ascii-serialisation-of-an-origin">
   <a href="https://html.spec.whatwg.org/multipage/origin.html#ascii-serialisation-of-an-origin">https://html.spec.whatwg.org/multipage/origin.html#ascii-serialisation-of-an-origin</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ascii-serialisation-of-an-origin">2. Manifest format</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-set-append">
   <a href="https://infra.spec.whatwg.org/#set-append">https://infra.spec.whatwg.org/#set-append</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-set-append">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-set-append①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-ascii-case-insensitive">
   <a href="https://infra.spec.whatwg.org/#ascii-case-insensitive">https://infra.spec.whatwg.org/#ascii-case-insensitive</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ascii-case-insensitive">3.3. Fetching payment method manifests</a> <a href="#ref-for-ascii-case-insensitive①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-iteration-break">
   <a href="https://infra.spec.whatwg.org/#iteration-break">https://infra.spec.whatwg.org/#iteration-break</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-iteration-break">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-byte-sequence">
   <a href="https://infra.spec.whatwg.org/#byte-sequence">https://infra.spec.whatwg.org/#byte-sequence</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-byte-sequence">3.3. Fetching payment method manifests</a> <a href="#ref-for-byte-sequence①">(2)</a> <a href="#ref-for-byte-sequence②">(3)</a>
    <li><a href="#ref-for-byte-sequence③">3.4. Validating and parsing payment method manifests</a>
    <li><a href="#ref-for-byte-sequence④">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-iteration-continue">
   <a href="https://infra.spec.whatwg.org/#iteration-continue">https://infra.spec.whatwg.org/#iteration-continue</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-iteration-continue">3.2. Ingesting payment method manifests</a> <a href="#ref-for-iteration-continue①">(2)</a>
    <li><a href="#ref-for-iteration-continue②">3.3. Fetching payment method manifests</a> <a href="#ref-for-iteration-continue③">(2)</a> <a href="#ref-for-iteration-continue④">(3)</a> <a href="#ref-for-iteration-continue⑤">(4)</a> <a href="#ref-for-iteration-continue⑥">(5)</a> <a href="#ref-for-iteration-continue⑦">(6)</a> <a href="#ref-for-iteration-continue⑧">(7)</a> <a href="#ref-for-iteration-continue⑨">(8)</a> <a href="#ref-for-iteration-continue①⓪">(9)</a> <a href="#ref-for-iteration-continue①①">(10)</a> <a href="#ref-for-iteration-continue①②">(11)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-map-exists">
   <a href="https://infra.spec.whatwg.org/#map-exists">https://infra.spec.whatwg.org/#map-exists</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-map-exists">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-map-exists①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-list-iterate">
   <a href="https://infra.spec.whatwg.org/#list-iterate">https://infra.spec.whatwg.org/#list-iterate</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-list-iterate">3.2. Ingesting payment method manifests</a> <a href="#ref-for-list-iterate①">(2)</a>
    <li><a href="#ref-for-list-iterate②">3.3. Fetching payment method manifests</a> <a href="#ref-for-list-iterate③">(2)</a> <a href="#ref-for-list-iterate④">(3)</a>
    <li><a href="#ref-for-list-iterate⑤">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-list-iterate⑥">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-struct-item">
   <a href="https://infra.spec.whatwg.org/#struct-item">https://infra.spec.whatwg.org/#struct-item</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-struct-item">3.1. Modifications to Payment Request API</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-javascript-string">
   <a href="https://infra.spec.whatwg.org/#javascript-string">https://infra.spec.whatwg.org/#javascript-string</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-javascript-string">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-list">
   <a href="https://infra.spec.whatwg.org/#list">https://infra.spec.whatwg.org/#list</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-list">3.3. Fetching payment method manifests</a> <a href="#ref-for-list①">(2)</a>
    <li><a href="#ref-for-list②">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-list③">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-ordered-map">
   <a href="https://infra.spec.whatwg.org/#ordered-map">https://infra.spec.whatwg.org/#ordered-map</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ordered-map">3.3. Fetching payment method manifests</a> <a href="#ref-for-ordered-map①">(2)</a>
    <li><a href="#ref-for-ordered-map②">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-ordered-map">
   <a href="https://infra.spec.whatwg.org/#ordered-map">https://infra.spec.whatwg.org/#ordered-map</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ordered-map">3.3. Fetching payment method manifests</a> <a href="#ref-for-ordered-map①">(2)</a>
    <li><a href="#ref-for-ordered-map②">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-ordered-set">
   <a href="https://infra.spec.whatwg.org/#ordered-set">https://infra.spec.whatwg.org/#ordered-set</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ordered-set">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-ordered-set①">(2)</a> <a href="#ref-for-ordered-set②">(3)</a> <a href="#ref-for-ordered-set③">(4)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-parse-json-into-infra-values">
   <a href="https://infra.spec.whatwg.org/#parse-json-into-infra-values">https://infra.spec.whatwg.org/#parse-json-into-infra-values</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-parse-json-into-infra-values">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-scalar-value-string">
   <a href="https://infra.spec.whatwg.org/#scalar-value-string">https://infra.spec.whatwg.org/#scalar-value-string</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-scalar-value-string">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-map-set">
   <a href="https://infra.spec.whatwg.org/#map-set">https://infra.spec.whatwg.org/#map-set</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-map-set">3.3. Fetching payment method manifests</a> <a href="#ref-for-map-set①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-list-size">
   <a href="https://infra.spec.whatwg.org/#list-size">https://infra.spec.whatwg.org/#list-size</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-list-size">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-list-size①">(2)</a> <a href="#ref-for-list-size②">(3)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-struct">
   <a href="https://infra.spec.whatwg.org/#struct">https://infra.spec.whatwg.org/#struct</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-struct">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-tuple">
   <a href="https://infra.spec.whatwg.org/#tuple">https://infra.spec.whatwg.org/#tuple</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-tuple">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-payment-method-identifiers">
   <a href="https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers">https://w3c.github.io/payment-method-id/#dfn-payment-method-identifiers</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-payment-method-identifiers">1.1. Use cases</a>
    <li><a href="#ref-for-dfn-payment-method-identifiers①">1.2. Accessing the manifest</a> <a href="#ref-for-dfn-payment-method-identifiers②">(2)</a> <a href="#ref-for-dfn-payment-method-identifiers③">(3)</a> <a href="#ref-for-dfn-payment-method-identifiers④">(4)</a>
    <li><a href="#ref-for-dfn-payment-method-identifiers⑤">3.2. Ingesting payment method manifests</a>
    <li><a href="#ref-for-dfn-payment-method-identifiers⑥">3.3. Fetching payment method manifests</a> <a href="#ref-for-dfn-payment-method-identifiers⑦">(2)</a> <a href="#ref-for-dfn-payment-method-identifiers⑧">(3)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-standardized-payment-method-identifiers">
   <a href="https://w3c.github.io/payment-method-id/#dfn-standardized-payment-method-identifiers">https://w3c.github.io/payment-method-id/#dfn-standardized-payment-method-identifiers</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-standardized-payment-method-identifiers">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-url-based-payment-method-identifiers">
   <a href="https://w3c.github.io/payment-method-id/#dfn-url-based-payment-method-identifiers">https://w3c.github.io/payment-method-id/#dfn-url-based-payment-method-identifiers</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-url-based-payment-method-identifiers">1.1. Use cases</a>
    <li><a href="#ref-for-dfn-url-based-payment-method-identifiers①">3.3. Fetching payment method manifests</a>
    <li><a href="#ref-for-dfn-url-based-payment-method-identifiers②">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-validate-a-url-based-payment-method-identifier">
   <a href="https://w3c.github.io/payment-method-id/#dfn-validate-a-url-based-payment-method-identifier">https://w3c.github.io/payment-method-id/#dfn-validate-a-url-based-payment-method-identifier</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-validate-a-url-based-payment-method-identifier">3.3. Fetching payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dom-paymentrequest">
   <a href="https://w3c.github.io/payment-request/#dom-paymentrequest">https://w3c.github.io/payment-request/#dom-paymentrequest</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dom-paymentrequest">3.1. Modifications to Payment Request API</a> <a href="#ref-for-dom-paymentrequest①">(2)</a>
    <li><a href="#ref-for-dom-paymentrequest②">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-paymentrequest-paymentrequest">
   <a href="https://w3c.github.io/payment-request/#dfn-paymentrequest-paymentrequest">https://w3c.github.io/payment-request/#dfn-paymentrequest-paymentrequest</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-paymentrequest-paymentrequest">3.1. Modifications to Payment Request API</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-serializedmethoddata">
   <a href="https://w3c.github.io/payment-request/#dfn-serializedmethoddata">https://w3c.github.io/payment-request/#dfn-serializedmethoddata</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-serializedmethoddata">3.1. Modifications to Payment Request API</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-payment-apps">
   <a href="https://w3c.github.io/payment-request/#dfn-payment-apps">https://w3c.github.io/payment-request/#dfn-payment-apps</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-payment-apps">1.1. Use cases</a> <a href="#ref-for-dfn-payment-apps①">(2)</a> <a href="#ref-for-dfn-payment-apps②">(3)</a>
    <li><a href="#ref-for-dfn-payment-apps③">1.3. Example manifest file</a> <a href="#ref-for-dfn-payment-apps④">(2)</a> <a href="#ref-for-dfn-payment-apps⑤">(3)</a>
    <li><a href="#ref-for-dfn-payment-apps⑥">3.1. Modifications to Payment Request API</a>
    <li><a href="#ref-for-dfn-payment-apps⑦">3.2. Ingesting payment method manifests</a> <a href="#ref-for-dfn-payment-apps⑧">(2)</a> <a href="#ref-for-dfn-payment-apps⑨">(3)</a>
    <li><a href="#ref-for-dfn-payment-apps①⓪">3.5. Fetching web app manifests</a>
    <li><a href="#ref-for-dfn-payment-apps①①">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-dfn-payment-method">
   <a href="https://w3c.github.io/payment-request/#dfn-payment-method">https://w3c.github.io/payment-request/#dfn-payment-method</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-dfn-payment-method①">1.1. Use cases</a> <a href="#ref-for-dfn-payment-method②">(2)</a> <a href="#ref-for-dfn-payment-method③">(3)</a> <a href="#ref-for-dfn-payment-method④">(4)</a> <a href="#ref-for-dfn-payment-method⑤">(5)</a> <a href="#ref-for-dfn-payment-method⑥">(6)</a>
    <li><a href="#ref-for-dfn-payment-method⑦">1.2. Accessing the manifest</a>
    <li><a href="#ref-for-dfn-payment-method⑧">1.3. Example manifest file</a> <a href="#ref-for-dfn-payment-method⑨">(2)</a> <a href="#ref-for-dfn-payment-method①⓪">(3)</a>
    <li><a href="#ref-for-dfn-payment-method①①">3.2. Ingesting payment method manifests</a> <a href="#ref-for-dfn-payment-method①②">(2)</a>
    <li><a href="#ref-for-dfn-payment-method①③">4.1. Revealing user activity to payment providers</a>
    <li><a href="#ref-for-dfn-payment-method①④">5.1. The payment-method-manifest link relation</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-upon-fulfillment">
   <a href="https://www.w3.org/2001/tag/doc/promises-guide/#upon-fulfillment">https://www.w3.org/2001/tag/doc/promises-guide/#upon-fulfillment</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-upon-fulfillment">3.3. Fetching payment method manifests</a> <a href="#ref-for-upon-fulfillment①">(2)</a>
    <li><a href="#ref-for-upon-fulfillment②">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-upon-rejection">
   <a href="https://www.w3.org/2001/tag/doc/promises-guide/#upon-rejection">https://www.w3.org/2001/tag/doc/promises-guide/#upon-rejection</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-upon-rejection">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-absolute-url-string">
   <a href="https://url.spec.whatwg.org/#absolute-url-string">https://url.spec.whatwg.org/#absolute-url-string</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-absolute-url-string">1.1. Use cases</a>
    <li><a href="#ref-for-absolute-url-string①">2. Manifest format</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-basic-url-parser">
   <a href="https://url.spec.whatwg.org/#concept-basic-url-parser">https://url.spec.whatwg.org/#concept-basic-url-parser</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-basic-url-parser">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-basic-url-parser①">(2)</a>
    <li><a href="#ref-for-concept-basic-url-parser②">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-concept-basic-url-parser③">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-fragment">
   <a href="https://url.spec.whatwg.org/#concept-url-fragment">https://url.spec.whatwg.org/#concept-url-fragment</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-fragment">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-origin">
   <a href="https://url.spec.whatwg.org/#concept-url-origin">https://url.spec.whatwg.org/#concept-url-origin</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-origin">2. Manifest format</a>
    <li><a href="#ref-for-concept-url-origin①">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-password">
   <a href="https://url.spec.whatwg.org/#concept-url-password">https://url.spec.whatwg.org/#concept-url-password</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-password">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-path">
   <a href="https://url.spec.whatwg.org/#concept-url-path">https://url.spec.whatwg.org/#concept-url-path</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-path">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-query">
   <a href="https://url.spec.whatwg.org/#concept-url-query">https://url.spec.whatwg.org/#concept-url-query</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-query">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-scheme">
   <a href="https://url.spec.whatwg.org/#concept-url-scheme">https://url.spec.whatwg.org/#concept-url-scheme</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-scheme">2. Manifest format</a>
    <li><a href="#ref-for-concept-url-scheme①">3.3. Fetching payment method manifests</a>
    <li><a href="#ref-for-concept-url-scheme②">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-concept-url-scheme③">(2)</a>
    <li><a href="#ref-for-concept-url-scheme④">4.2. Considerations for development environments</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url">
   <a href="https://url.spec.whatwg.org/#concept-url">https://url.spec.whatwg.org/#concept-url</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url">2. Manifest format</a> <a href="#ref-for-concept-url①">(2)</a>
    <li><a href="#ref-for-concept-url②">3.3. Fetching payment method manifests</a> <a href="#ref-for-concept-url③">(2)</a> <a href="#ref-for-concept-url④">(3)</a>
    <li><a href="#ref-for-concept-url⑤">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-concept-url⑥">(2)</a>
    <li><a href="#ref-for-concept-url⑦">3.5. Fetching web app manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-concept-url-username">
   <a href="https://url.spec.whatwg.org/#concept-url-username">https://url.spec.whatwg.org/#concept-url-username</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-concept-url-username">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="term-for-valid-url-string">
   <a href="https://url.spec.whatwg.org/#valid-url-string">https://url.spec.whatwg.org/#valid-url-string</a><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-valid-url-string">2. Manifest format</a>
   </ul>
  </aside>
  <h3 class="no-num no-ref heading settled" id="index-defined-elsewhere"><span class="content">Terms defined by reference</span><a class="self-link" href="#index-defined-elsewhere"></a></h3>
  <ul class="index">
   <li>
    <a data-link-type="biblio">[appmanifest]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-dfn-processed-manifest" style="color:initial">processed web app manifest</span>
     <li><span class="dfn-paneled" id="term-for-dfn-obtaining-the-manifest" style="color:initial">steps for obtaining a web app manifest</span>
     <li><span class="dfn-paneled" id="term-for-dfn-processing-a-manifest" style="color:initial">steps for processing a web app manifest</span>
     <li><span class="dfn-paneled" id="term-for-dfn-manifest-url" style="color:initial">url</span>
     <li><span class="dfn-paneled" id="term-for-dfn-manifest" style="color:initial">web app manifest</span>
    </ul>
   <li>
    <a data-link-type="biblio">[ENCODING]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-utf-8" style="color:initial">utf-8</span>
     <li><span class="dfn-paneled" id="term-for-utf-8-decode" style="color:initial">utf-8 decode</span>
    </ul>
   <li>
    <a data-link-type="biblio">[FETCH]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-concept-response-body" style="color:initial">body</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-client" style="color:initial">client</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-credentials-mode" style="color:initial">credentials mode</span>
     <li><span class="dfn-paneled" id="term-for-extract-header-list-values" style="color:initial">extract header list values</span>
     <li><span class="dfn-paneled" id="term-for-concept-fetch" style="color:initial">fetch</span>
     <li><span class="dfn-paneled" id="term-for-concept-get-reader" style="color:initial">get a reader</span>
     <li><span class="dfn-paneled" id="term-for-concept-response-header-list" style="color:initial">header list</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-method" style="color:initial">method</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-mode" style="color:initial">mode</span>
     <li><span class="dfn-paneled" id="term-for-concept-network-error" style="color:initial">network error</span>
     <li><span class="dfn-paneled" id="term-for-ok-status" style="color:initial">ok status</span>
     <li><span class="dfn-paneled" id="term-for-process-response" style="color:initial">process response</span>
     <li><span class="dfn-paneled" id="term-for-process-response-end-of-body" style="color:initial">process response end-of-body</span>
     <li><span class="dfn-paneled" id="term-for-concept-read-all-bytes-from-readablestream" style="color:initial">read all bytes</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-redirect-mode" style="color:initial">redirect mode</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-referrer" style="color:initial">referrer</span>
     <li><span class="dfn-paneled" id="term-for-concept-request-referrer-policy" style="color:initial">referrer policy</span>
     <li><span class="dfn-paneled" id="term-for-concept-request" style="color:initial">request</span>
     <li><span class="dfn-paneled" id="term-for-concept-response" style="color:initial">response</span>
     <li><span class="dfn-paneled" id="term-for-concept-response-status" style="color:initial">status</span>
     <li><span class="dfn-paneled" id="term-for-concept-fetch-terminate" style="color:initial">terminated</span>
     <li><span class="dfn-paneled" id="term-for-concept-response-url" style="color:initial">url <small>(for response)</small></span>
    </ul>
   <li>
    <a data-link-type="biblio">[HTML]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-current-settings-object" style="color:initial">current settings object</span>
     <li><span class="dfn-paneled" id="term-for-environment-settings-object" style="color:initial">environment settings object</span>
     <li><span class="dfn-paneled" id="term-for-concept-origin" style="color:initial">origin</span>
     <li><span class="dfn-paneled" id="term-for-ascii-serialisation-of-an-origin" style="color:initial">serialization of an origin</span>
    </ul>
   <li>
    <a data-link-type="biblio">[INFRA]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-set-append" style="color:initial">append <small>(for set)</small></span>
     <li><span class="dfn-paneled" id="term-for-ascii-case-insensitive" style="color:initial">ascii case-insensitive</span>
     <li><span class="dfn-paneled" id="term-for-iteration-break" style="color:initial">break</span>
     <li><span class="dfn-paneled" id="term-for-byte-sequence" style="color:initial">byte sequence</span>
     <li><span class="dfn-paneled" id="term-for-iteration-continue" style="color:initial">continue</span>
     <li><span class="dfn-paneled" id="term-for-map-exists" style="color:initial">exist</span>
     <li><span class="dfn-paneled" id="term-for-list-iterate" style="color:initial">for each</span>
     <li><span class="dfn-paneled" id="term-for-struct-item" style="color:initial">item</span>
     <li><span class="dfn-paneled" id="term-for-javascript-string" style="color:initial">javascript string</span>
     <li><span class="dfn-paneled" id="term-for-list" style="color:initial">list</span>
     <li><span class="dfn-paneled" id="term-for-ordered-map" style="color:initial">map</span>
     <li><span class="dfn-paneled" id="term-for-ordered-map①" style="color:initial">ordered map</span>
     <li><span class="dfn-paneled" id="term-for-ordered-set" style="color:initial">ordered set</span>
     <li><span class="dfn-paneled" id="term-for-parse-json-into-infra-values" style="color:initial">parse json into infra values</span>
     <li><span class="dfn-paneled" id="term-for-scalar-value-string" style="color:initial">scalar value string</span>
     <li><span class="dfn-paneled" id="term-for-map-set" style="color:initial">set</span>
     <li><span class="dfn-paneled" id="term-for-list-size" style="color:initial">size</span>
     <li><span class="dfn-paneled" id="term-for-struct" style="color:initial">struct</span>
     <li><span class="dfn-paneled" id="term-for-tuple" style="color:initial">tuple</span>
    </ul>
   <li>
    <a data-link-type="biblio">[payment-method-id]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-dfn-payment-method-identifiers" style="color:initial">payment method identifier</span>
     <li><span class="dfn-paneled" id="term-for-dfn-standardized-payment-method-identifiers" style="color:initial">standardized payment method identifier</span>
     <li><span class="dfn-paneled" id="term-for-dfn-url-based-payment-method-identifiers" style="color:initial">url-based payment method identifier</span>
     <li><span class="dfn-paneled" id="term-for-dfn-validate-a-url-based-payment-method-identifier" style="color:initial">validate a url-based payment method identifier</span>
    </ul>
   <li>
    <a data-link-type="biblio">[PAYMENT-REQUEST]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-dom-paymentrequest" style="color:initial">PaymentRequest</span>
     <li><span class="dfn-paneled" id="term-for-dfn-paymentrequest-paymentrequest" style="color:initial">PaymentRequest(methodData, details, options)</span>
     <li><span class="dfn-paneled" id="term-for-dfn-serializedmethoddata" style="color:initial">[[serializedmethoddata]]</span>
     <li><span class="dfn-paneled" id="term-for-dfn-payment-apps" style="color:initial">payment app</span>
     <li><span class="dfn-paneled" id="term-for-dfn-payment-method" style="color:initial">payment method</span>
    </ul>
   <li>
    <a data-link-type="biblio">[promises-guide]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-upon-fulfillment" style="color:initial">upon fulfillment</span>
     <li><span class="dfn-paneled" id="term-for-upon-rejection" style="color:initial">upon rejection</span>
    </ul>
   <li>
    <a data-link-type="biblio">[URL]</a> defines the following terms:
    <ul>
     <li><span class="dfn-paneled" id="term-for-absolute-url-string" style="color:initial">absolute-url string</span>
     <li><span class="dfn-paneled" id="term-for-concept-basic-url-parser" style="color:initial">basic url parser</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-fragment" style="color:initial">fragment</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-origin" style="color:initial">origin</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-password" style="color:initial">password</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-path" style="color:initial">path</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-query" style="color:initial">query</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-scheme" style="color:initial">scheme</span>
     <li><span class="dfn-paneled" id="term-for-concept-url" style="color:initial">url</span>
     <li><span class="dfn-paneled" id="term-for-concept-url-username" style="color:initial">username</span>
     <li><span class="dfn-paneled" id="term-for-valid-url-string" style="color:initial">valid url string</span>
    </ul>
  </ul>
  <h2 class="no-num no-ref heading settled" id="references"><span class="content">References</span><a class="self-link" href="#references"></a></h2>
  <h3 class="no-num no-ref heading settled" id="normative"><span class="content">Normative References</span><a class="self-link" href="#normative"></a></h3>
  <dl>
   <dt id="biblio-appmanifest">[APPMANIFEST]
   <dd>Marcos Caceres; et al. <a href="https://w3c.github.io/manifest/">Web App Manifest</a>. URL: <a href="https://w3c.github.io/manifest/">https://w3c.github.io/manifest/</a>
   <dt id="biblio-encoding">[ENCODING]
   <dd>Anne van Kesteren. <a href="https://encoding.spec.whatwg.org/">Encoding Standard</a>. Living Standard. URL: <a href="https://encoding.spec.whatwg.org/">https://encoding.spec.whatwg.org/</a>
   <dt id="biblio-fetch">[FETCH]
   <dd>Anne van Kesteren. <a href="https://fetch.spec.whatwg.org/">Fetch Standard</a>. Living Standard. URL: <a href="https://fetch.spec.whatwg.org/">https://fetch.spec.whatwg.org/</a>
   <dt id="biblio-html">[HTML]
   <dd>Anne van Kesteren; et al. <a href="https://html.spec.whatwg.org/multipage/">HTML Standard</a>. Living Standard. URL: <a href="https://html.spec.whatwg.org/multipage/">https://html.spec.whatwg.org/multipage/</a>
   <dt id="biblio-infra">[INFRA]
   <dd>Anne van Kesteren; Domenic Denicola. <a href="https://infra.spec.whatwg.org/">Infra Standard</a>. Living Standard. URL: <a href="https://infra.spec.whatwg.org/">https://infra.spec.whatwg.org/</a>
   <dt id="biblio-payment-method-id">[PAYMENT-METHOD-ID]
   <dd>Marcos Caceres; et al. <a href="https://w3c.github.io/payment-method-id/">Payment Method Identifiers</a>. URL: <a href="https://w3c.github.io/payment-method-id/">https://w3c.github.io/payment-method-id/</a>
   <dt id="biblio-payment-request">[PAYMENT-REQUEST]
   <dd>Zach Koch; et al. <a href="https://w3c.github.io/payment-request/">Payment Request API</a>. URL: <a href="https://w3c.github.io/payment-request/">https://w3c.github.io/payment-request/</a>
   <dt id="biblio-promises-guide">[PROMISES-GUIDE]
   <dd>Domenic Denicola. <a href="https://www.w3.org/2001/tag/doc/promises-guide">Writing Promise-Using Specifications</a>. 9 November 2018. TAG Finding. URL: <a href="https://www.w3.org/2001/tag/doc/promises-guide">https://www.w3.org/2001/tag/doc/promises-guide</a>
   <dt id="biblio-rfc8288">[RFC8288]
   <dd>M. Nottingham. <a href="https://httpwg.org/specs/rfc8288.html">Web Linking</a>. October 2017. Proposed Standard. URL: <a href="https://httpwg.org/specs/rfc8288.html">https://httpwg.org/specs/rfc8288.html</a>
   <dt id="biblio-url">[URL]
   <dd>Anne van Kesteren. <a href="https://url.spec.whatwg.org/">URL Standard</a>. Living Standard. URL: <a href="https://url.spec.whatwg.org/">https://url.spec.whatwg.org/</a>
  </dl>
  <h3 class="no-num no-ref heading settled" id="informative"><span class="content">Informative References</span><a class="self-link" href="#informative"></a></h3>
  <dl>
   <dt id="biblio-payment-handler">[PAYMENT-HANDLER]
   <dd>Adrian Hope-Bailie; et al. <a href="https://w3c.github.io/payment-handler/">Payment Handler API</a>. URL: <a href="https://w3c.github.io/payment-handler/">https://w3c.github.io/payment-handler/</a>
  </dl>
  <aside class="dfn-panel" data-for="payment-method-manifest">
   <b><a href="#payment-method-manifest">#payment-method-manifest</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-payment-method-manifest">1.1. Use cases</a>
    <li><a href="#ref-for-payment-method-manifest①">1.2. Accessing the manifest</a> <a href="#ref-for-payment-method-manifest②">(2)</a>
    <li><a href="#ref-for-payment-method-manifest③">1.3. Example manifest file</a>
    <li><a href="#ref-for-payment-method-manifest④">2. Manifest format</a> <a href="#ref-for-payment-method-manifest⑤">(2)</a> <a href="#ref-for-payment-method-manifest⑥">(3)</a> <a href="#ref-for-payment-method-manifest⑦">(4)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="valid-payment-method-manifest">
   <b><a href="#valid-payment-method-manifest">#valid-payment-method-manifest</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-valid-payment-method-manifest">2. Manifest format</a> <a href="#ref-for-valid-payment-method-manifest①">(2)</a> <a href="#ref-for-valid-payment-method-manifest②">(3)</a>
    <li><a href="#ref-for-valid-payment-method-manifest③">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="ingest-payment-method-manifests">
   <b><a href="#ingest-payment-method-manifests">#ingest-payment-method-manifests</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-ingest-payment-method-manifests">3.1. Modifications to Payment Request API</a>
    <li><a href="#ref-for-ingest-payment-method-manifests①">4.1. Revealing user activity to payment providers</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="fetch-payment-method-manifests">
   <b><a href="#fetch-payment-method-manifests">#fetch-payment-method-manifests</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-fetch-payment-method-manifests">3.2. Ingesting payment method manifests</a>
    <li><a href="#ref-for-fetch-payment-method-manifests①">4.1. Revealing user activity to payment providers</a>
    <li><a href="#ref-for-fetch-payment-method-manifests②">4.2. Considerations for development environments</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="parsed-payment-method-manifest">
   <b><a href="#parsed-payment-method-manifest">#parsed-payment-method-manifest</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-parsed-payment-method-manifest">3.4. Validating and parsing payment method manifests</a> <a href="#ref-for-parsed-payment-method-manifest①">(2)</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="parsed-payment-method-manifest-default-applications">
   <b><a href="#parsed-payment-method-manifest-default-applications">#parsed-payment-method-manifest-default-applications</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-parsed-payment-method-manifest-default-applications">3.2. Ingesting payment method manifests</a>
    <li><a href="#ref-for-parsed-payment-method-manifest-default-applications①">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="parsed-payment-method-manifest-supported-origins">
   <b><a href="#parsed-payment-method-manifest-supported-origins">#parsed-payment-method-manifest-supported-origins</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-parsed-payment-method-manifest-supported-origins">3.2. Ingesting payment method manifests</a>
    <li><a href="#ref-for-parsed-payment-method-manifest-supported-origins①">3.4. Validating and parsing payment method manifests</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="validate-and-parse-the-payment-method-manifest">
   <b><a href="#validate-and-parse-the-payment-method-manifest">#validate-and-parse-the-payment-method-manifest</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-validate-and-parse-the-payment-method-manifest">3.2. Ingesting payment method manifests</a>
    <li><a href="#ref-for-validate-and-parse-the-payment-method-manifest①">4.2. Considerations for development environments</a>
   </ul>
  </aside>
  <aside class="dfn-panel" data-for="fetch-the-web-app-manifest-for-a-default-payment-app">
   <b><a href="#fetch-the-web-app-manifest-for-a-default-payment-app">#fetch-the-web-app-manifest-for-a-default-payment-app</a></b><b>Referenced in:</b>
   <ul>
    <li><a href="#ref-for-fetch-the-web-app-manifest-for-a-default-payment-app">3.2. Ingesting payment method manifests</a>
   </ul>
  </aside>
<script>/* script-dfn-panel */

document.body.addEventListener("click", function(e) {
    var queryAll = function(sel) { return [].slice.call(document.querySelectorAll(sel)); }
    // Find the dfn element or panel, if any, that was clicked on.
    var el = e.target;
    var target;
    var hitALink = false;
    while(el.parentElement) {
        if(el.tagName == "A") {
            // Clicking on a link in a <dfn> shouldn't summon the panel
            hitALink = true;
        }
        if(el.classList.contains("dfn-paneled")) {
            target = "dfn";
            break;
        }
        if(el.classList.contains("dfn-panel")) {
            target = "dfn-panel";
            break;
        }
        el = el.parentElement;
    }
    if(target != "dfn-panel") {
        // Turn off any currently "on" or "activated" panels.
        queryAll(".dfn-panel.on, .dfn-panel.activated").forEach(function(el){
            el.classList.remove("on");
            el.classList.remove("activated");
        });
    }
    if(target == "dfn" && !hitALink) {
        // open the panel
        var dfnPanel = document.querySelector(".dfn-panel[data-for='" + el.id + "']");
        if(dfnPanel) {
            dfnPanel.classList.add("on");
            var rect = el.getBoundingClientRect();
            dfnPanel.style.left = window.scrollX + rect.right + 5 + "px";
            dfnPanel.style.top = window.scrollY + rect.top + "px";
            var panelRect = dfnPanel.getBoundingClientRect();
            var panelWidth = panelRect.right - panelRect.left;
            if(panelRect.right > document.body.scrollWidth && (rect.left - (panelWidth + 5)) > 0) {
                // Reposition, because the panel is overflowing
                dfnPanel.style.left = window.scrollX + rect.left - (panelWidth + 5) + "px";
            }
        } else {
            console.log("Couldn't find .dfn-panel[data-for='" + el.id + "']");
        }
    } else if(target == "dfn-panel") {
        // Switch it to "activated" state, which pins it.
        el.classList.add("activated");
        el.style.left = null;
        el.style.top = null;
    }

});
</script>